小编Mit*_*van的帖子

为什么在将4096个字节写入以proc_open开头的进程后,PHP挂起?

对于任何想知道的人来说,在离开它几个小时之后它现在完美无缺.

我正在尝试使用PHP将视频文件传递给VLC作为即将推出的项目提案的概念证明.

我设法通过创建一个<4KB(灰色10秒)文件并测试我的脚本来显示它的工作原理,但我很好奇为什么会发生这种情况的原因.

这是一个示例脚本,看看我的意思:

$filepath = 'Path/to/your/video';
$vlcpath = 'Path/to/your/VLC executable';

$descriptorspec = array(
    0 => array("pipe", "r"),  // stdin
    1 => array("pipe", "w"),  // stdout
    2 => array("pipe", "w")   // stderr
);

$vlc = proc_open($vlcpath . ' -', $descriptorspec, $pipes, null, null, ['bypass_shell' => true]);

$file = fopen($filepath, 'r');
stream_copy_to_stream($file, $pipes[0]);
fclose($file);
proc_close($vlc);
Run Code Online (Sandbox Code Playgroud)

我在Windows 10上使用PHP 5.5.31.我在PHP网站上看到了一些有关此类事情的错误报告,但他们建议最新版本修复它.我不太了解阻塞流的概念,但我已经尝试过PHP v7.0.3无济于事.

我正在使用命令行运行此脚本: php file.php

php stdin vlc proc-open

9
推荐指数
1
解决办法
367
查看次数

标签 统计

php ×1

proc-open ×1

stdin ×1

vlc ×1