我有一个exec命令,我用来使ffmpeg工作。
$process = exec("/usr/local/bin/ffmpeg -i /home/g/Desktop/cave.wmv -deinterlace
-acodec libfaac -ab 96k -ar 44100 -vcodec libx264 -s 480x320 -f flv /home/g/Desktop
/file.flv 2>&1 | php testing123.php") ;
在testing123.php中,我使用
$h = fopen('php://stdin', 'r'); $str = fgets($h); fclose($h);
//topic removed
$sql = 'INSERT INTO table
(id,status) VALUES(?,?)';
$stmt3 = $conn->prepare($sql);
$result=$stmt3->execute(array(rand(),$str));
但是,正如您可能已经猜到我得到一个数据库条目,只有当文件最初从另一个文件中的exec命令执行时。 有没有办法继续执行文件或其他内容,以便每隔几秒就可以将输入到文件的输出插入到我的数据库中?
答案 0 :(得分:3)
您需要使用while
循环。 fgets
文档中有一些示例。
$h = fopen('php://stdin', 'r');
while ( ($str = fgets($h)) !== false )
{
$sql = 'INSERT INTO ...';
mysql_query($sql);
}
fclose($h);
文档中的一条评论建议使用stream_get_line
代替fgets
。如果您有兴趣,请点击以下链接:http://www.php.net/manual/en/function.fgets.php#86319。