即使使用stream_set_blocking,空的php ssh2流内容也可以?
我正在使用使用PECL SSH2扩展程序从远程主机读取iPtables配置的工具.我能够成功地将连接到主机,身份验证和执行命令.我遇到的麻烦有时是流不包含任何数据. /** * Load the current firewall configuration * @return bool */ public function loadRules() { $stream = ssh2_exec($this->connection,"~/iptsave;"); stream_set_blocking($stream,true); $iptablesSave = stream_get_contents($stream); if(empty($iptablesSave)) { return false; } parent::restore($iptablesSave); return true; } 大约有25%的时间,loadRu
0 2023-05-31
编程技术问答社区
使用PHP(或其他语言)进行数据流(如音乐)。
多年来,我一直在研究如何从计算机创建音乐流.我看过程序,但是我看到的任何有用的只是Windows(我使用Mac). 最终,我对 流的工作方式感兴趣.有什么方法可以创建我的自己的流,可能使用PHP中的套接字函数?有一个PHP库吗? 解决方案 看看其他解决方案 最终都归结为您要使用的协议. imho shoutcast是普通的http,所以 make 您自己的流,您只需输出流内容. 为了使基于OGG的Webradio与Sonos系统一起工作,我创建了一个围绕Sox的一些转码包装器,这实际上是用PHP编写的,因此作为一个例子可能会有所帮助. . 您会在这里找到它: http://www.gnegg.gnegg.gnegg.ch/ogg2mp3/> 如果您正在实现自己的流式协议之后 - 甚至可能是基于UDP的,那么,恐怕PHP可能不是解决问题的正确解决方案 - 至少只有它在有大量问题时就不是用于长期运行的过程(5.3可能会为其集成垃圾收集带来一些帮助)
0 2023-05-31
编程技术问答社区
如何让Node.js不把套接字消息分割成小块
我有一个聊天程序,该程序将JSON数据从Apache/PHP推向Node.js,通过TCP套接字: // Node.js (Javascript) phpListener = net.createServer(function(stream) { stream.setEncoding("utf8"); stream.on("data", function(txt) { var json = JSON.parse(txt); // do stuff with json } } phpListener.listen("8887", 'localhost'); // Apache (PHP) $sock = stream_socket_client("tcp://localhost:8887"); $written = fwrite($sock, $json_string); fclose($sock); 问题是,如
0 2023-05-31
编程技术问答社区
php zip_open()和php://温度似乎无法打开
不确定这是否可以,但现在已经成为一场学术斗争. 使用__halt_compiler()技巧将二进制数据嵌入php文件中,我已经成功创建了一个自动打开的脚本,该脚本将fseek() to __COMPILER_HALT_OFFSET__(不太困难,因为这个精确的示例是记录在手册中) 无论如何,我一直在致电__halt_compiler() 之后,我存储了一小部分二进制zip数据(一个包含单个文件的单个文件夹) 我试图做的是将数据直接复制到php://temp流,并成功地将数据复制(如果i rewind()和passthru()临时流句柄,它将转储数据) $php = fopen(__FILE__, 'rb'); $tmp = fopen('php://temp', 'r+b'); fseek($php, __COMPILER_HALT_OFFSET__); stream_copy_to_stream($php, $tmp); 我的问题是尝试现在打开php://te
0 2023-05-31
编程技术问答社区
用fopen使用代理服务器
我正在尝试使用Fopen从另一个网站读取远程文件.我想使用代理来执行此操作,据我所知,我可以做: $context = stream_context_create(array( 'http' => array( 'proxy' => 'tcp://192.168.10.10:80' // The proxy server address and port ), )); $file = fopen($url, 'r', false, $context) 但是有没有办法使用该代理使用用户名和密码进行身份验证?或者我不得不使用公共代理? 另外,代理定义是tcp://192.168.10.10:80.如果我想使用HTTP代理,我可以随意将其更改为http://192.168.10.10:80? 谢谢. 解决方案 您可以使用在$context中,如果代理需要authentication.example,from php.net :
0 2023-05-31
编程技术问答社区
如何使用PHP'的stream_select()与zlib过滤器?
我目前有一个用PHP编写的服务器守护程序,该服务器接受传入的连接,并使用stream_socket_*函数为其创建网络流,并使用stream_select()进行polls polls活动流.我希望能够在任意流中添加一个Zlib滤波器(使用string_filter_append()),但是当我这样做时,我会发现一个错误告诉我stream_select()不能用于轮询过滤的流. 我该如何解决这个限制? 解决方案 您可以使用管道,然后将过滤器添加到管道中. 这将允许您在流上使用stream_select,该管道将用作Zlib的缓冲区. 从select()ed流中读取原始数据,将其写入管道,然后在另一侧读取解码数据:) list($in, $out) = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0); stream_filter_append($out, 'zlib.inflate', STR
0 2023-05-31
编程技术问答社区
将Zlib过滤器与插座对
出于某种原因,zlib.deflate过滤器似乎与stream_socket_pair()生成的套接对面无效.可以从第二个插座读取的所有内容都是两字节Zlib标头,然后所有内容均为null. 示例: 6, 'window' => 15, 'memory' => 9); stream_filter_append($in, 'zlib.deflate', STREAM_FILTER_WRITE, $params); stream_set_blocking($in, 0); strea
2 2023-05-31
编程技术问答社区
如何将大文件从S3流式传输到Laravel视图
我的工作大部分是有效的,但是很难完成它. 现在我有一个简单的路线: Route::get('file/{id}/', 'FileController@fileStream')->name('file'); 此路线连接到FileController中的操作: public function fileStream($id){ $audio = \App\Audio::where('id', $id)->first(); $client = S3Client::factory([ 'credentials' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), ], 'region' => env('S3REGION'), 'v
0 2023-05-30
编程技术问答社区
在解析IMAP时,base64编码的字符串通过fgets调用被截断。
我正在用zend_mail解析电子邮件,奇怪的是,有些内容被截断而没有明显的原因,并畸形了电子邮件零件. 例如 Content-Disposition: attachment; filename="file.sdv" DQogICAgICBTT05FO0xBTkRJTkdTREE7U0FMR1NEQVRPIDtOQVNKIDtSRURTS0FQICAgICAgICAg ICAgIDsgRklTS0VTTEFHO1BSRVNFUlYgICA7ICBUSUxTVEFORDsgU1TYUlJFTFNFOyAgS1ZBTElU RVQ7T01TVFlQRSAgO01JTlNURVBSSVM7ICAgICBWRVJESTsgICBLVkFOVFVNOyAgUlVORFZFS1Qg IA0KLS0tLS0tLS0tLTstLS0tLS0tLS0tOy0tLS0tLS0tLS07LS0tLS07LS0tLS0tLS0tLS0tLS0t LS0tLS07LS0tLS0tLS0tLTstLS
0 2023-05-30
编程技术问答社区
Stream_Copy_To_Stream()的替代方案 php
我现在正在研究文件共享站点,我遇到了一个小问题.我正在使用上传的脚本上载,该上载非常有效,但是如果用户想要,我希望将上传的文件加密.现在,我有了如下所示的工作代码,但我的服务器只有1GB或内存,并且使用stream_copy_to_stream似乎占用了内存中实际文件的大小,而我的最大上传大小为256,所以我知道事实上有些不好的事实当该网站上线和多个人一次上传大文件时,将会发生.基于下面的代码,有任何几乎不使用和内存的选择,或者根本没有内存,我什至不在乎我只需要更长的时间才能工作.我有此工作的下载版本,因为我将文件直接解密并立即传递到浏览器,因此它可以解密它,因为它的下载虽然非常有效,但是这个上传问题看起来不好.任何帮助都将不胜感激. $temp_file = $_FILES['Filedata']['tmp_name']; $ext = pathinfo($_FILES['Filedata']['name'], PATHINFO_EXTENSION); $new_
0 2023-05-30
编程技术问答社区
使用自定义流包装器作为PHP的http://流包装器的测试存根
我正在编写一个自定义流包装器,以用作使用内置http://流式包装器的HTTP客户端类的单元测试中的存根. 具体来说,我需要控制'wrapper_data'键中返回的值,通过调用由自定义流包装器创建的流上的stream_get_meta_data.不幸的是,自定义流包装器上的文档很糟糕,API似乎并不直觉. 自定义包装器中哪种方法控制元wrapper_data响应? 使用底部的类,我只能在使用自定义包装器创建的流上的i var_dump(stream_get_meta_data($stream)); ... 上获得以下结果. array(10) { 'wrapper_data' => class CustomHttpStreamWrapper#5 (3) { public $context => resource(13) of type (stream-context) public $position => int(0)
0 2023-05-30
编程技术问答社区
以编程方式将视频从php服务器流向安卓系统
我有一个视频的URL.我想将视频流式传输到我的应用程序.我可以完全下载视频文件,然后播放,但是我希望在下载视频时也应该像YouTube一样播放视频.我运行了一个PHP服务器,其中包含视频. 我已经看到了这个问题,但是没有任何问题的答案. 解决方案 您可以浏览代码 void playvideo(String url) { String link=url; Log.e("url",link); view1 = (VideoView) findViewById(R.id.myVideoView); getWindow().setFormat(PixelFormat.TRANSLUCENT); MediaController mc = new MediaController(this); mc.setMediaPlayer(view1); view1.setMediaController(m
0 2023-05-30
编程技术问答社区
PHP中的流上下文 - 这是什么?
我已经搜索了几个小时,我无法弄清楚PHP中的"流上下文"是什么.我正在尝试使用API​​,它涉及使用此"流上下文". 文档说: 上下文是一组参数和包装器特定选项,可修改或增强流的行为. 什么? 的参数 选项是"特定于包装器"的含义? 什么流? 这是我正在谈论的代码: // Encode the credentials and create the stream context. $auth = base64_encode("$acctKey:$acctKey"); $data = array( 'http' => array( 'request_fulluri' => true, // ignore_errors can help debug – remove for production. This option added in PHP 5.2.10 'ignore_errors' => true, 'header' => "Authorizatio
0 2023-05-30
编程技术问答社区
PHP插座与流
我认为PHP插座和PHP流相互重叠. 我已经设法使用插座或流进行了CLI PHP CHAT客户端和服务器. 在这里一些说明代码行: 使用插座: ... $main_socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Cannot create socket.\n"); @socket_bind($main_socket, $host, $port) or die("Could not bind to socket $host : $port.\n"); @socket_listen($main_socket, 5) or die("Could not set up socket listener\n"); ... 使用流: ... $main_socket = @stream_socket_server ("tcp://$host:$port", $errno, $errstr, STRE
2 2023-05-30
编程技术问答社区
使用stream_filter_append and stream_copy_to_stream uncompress gzip
找到了这个: stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_* 怎么样 寻找另一种取消压缩数据的方法. $fp = fopen($src, 'rb'); $to = fopen($output, 'wb'); // some filtering here? stream_copy_to_stream($fp, $to); fclose($fp); fclose($to); 其中$src是http://.../file.gz的一个URL,例如200+ MB:) 添加了有效的测试代码,但分为2个步骤:
2 2023-05-29
编程技术问答社区
PHP加密从JavaScript加密流文件
我正在为大文件开发文件上传器.从HTML脚本上传,然后使用ArrayBuffer和Unit8Array从JavaScript发送字节到PHP. PHP脚本将流式传输文件并将其保存到文件夹中. 这是我的JavaScript,看起来像 function upload(fileInputId, fileIndex) { var file = document.getElementById(fileInputId).files[fileIndex]; var blob; var reader = new FileReader(); reader.readAsBinaryString(file); reader.onloadend = function(evt) { xhr = new XMLHttpRequest(); xhr.
0 2023-05-29
编程技术问答社区
用php将字符串转换为压缩流
我有一个带有数据库的处理服务器和一个服务数据库,可用于较低带宽成本的文件.在处理服务器上,PHP无法创建文件,因此必须使用流和/或保持内存之前的所有操作,然后再将其发送到另一台服务器进行下载.几天前 $fp=fopen('php://memory','w+'); fwrite($fp,"Hello world"); fseek($fp,0,SEEK_SET); //make a ftp connection here with $conn_id $upload = ftp_fput($conn_id,"targetpath/helloworld.txt",$fp,FTP_BINARY); 将文件放在内存中,然后允许我将其ftp转到我的另一台服务器上.这正是我想要的,除了我还想在发送数据之前将数据拉开 - 最好仅使用PHP的本机零件(例如Ziparchive),而不是其他自定义类进行特殊流操作的类别.我知道我非常接近以下... $zip = new ZipArchive();
0 2023-05-29
编程技术问答社区
包括PHP流中的代码
我想知道是否有可能创建流包装器,以便将一些代码从数组加载到使用以下内容 之类的东西 并且它像做一个正常的文件一样起作用吗?询问的原因是因为我真的不想将模板存储在文件系统上,所以它们要么存在于memcache或数据库表中,而且不想使用eval(). 我还假设我需要将ally_url_include设置为on? 解决方案 我知道这是一个古老的问题...但是我认为值得注意的是,您可以做类似的事情: $content = ' print this html '; 通常,这将非常麻烦,但是您可以做: include "data://text/plain;base64,".base64_encode($content); 它会像! 那样活泼地解析它 其他解决方案 包括可以使
0 2023-05-29
编程技术问答社区
使用Guzzle PHP将文件分块上传至URL端点
我想使用guzzle上将文件上传到URL端点. 我应该能够提供内容范围和内容长度的标题. 使用php我知道我可以使用 拆分 define('CHUNK_SIZE', 1024*1024); // Size (in bytes) of chunk function readfile_chunked($filename, $retbytes = TRUE) { $buffer = ''; $cnt = 0; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, CHUNK_SIZE); echo $buffer; ob_flush(); flus
2 2023-05-28
编程技术问答社区
在PHP中通过HTTP PUT发送一个文件
我一直在努力几个小时,试图弄清楚如何获得这项工作.我正在尝试通过HTTP-PUT将文件发送到存在的DB.服务器有用户身份验证,所以我试图做类似的事情: 我有将文档放在的URL 我有存在DB的用户名和密码 我有需要通过put 发送的内容 我尝试与卷发一起工作,但会默默失败 我尝试使用PHP流,但一直在获得"错误201/创建",但实际上没有创建文件. 对此的任何帮助将不胜感激. 这是我尝试使用php流的一些示例代码 $data = file_get_contents($tmpFile); $header = array( "Authorization: Basic " . base64_encode($thi
0 2023-05-28
编程技术问答社区