我为嵌入式系统编写了一个C ++程序。我的程序处理由相机拍摄的图像( 350 fps甚至更多)并对它们应用一些机器视觉算法。我写了我的程序的结果,它是我硬盘中特定位置的jpg图像(例如localhost / output / result.jpg)
现在我想编写一个PHP代码,每30毫秒或更快显示一次这个图像(这取决于我的c ++程序的输出....有时它是30 fps,有时10或40但不超过40! !!)视频帧彼此无关,所以我不能使用流式视频,因为这些算法假设帧是连续的....
PHP代码可能会读取损坏的图像(因为,一个程序想要写,另一个想读取)
我想在这里使用互斥锁概念...创建一个标志(文本文件),每当我的C ++程序想要写入同一位置时,两个程序都可以访问它,将标志设置为高(在文本文件中写入内容)当它完成写入时清除标志,所以当PHP代码看到该标志等待,直到图像写入硬盘驱动器然后显示它....
我对C ++很熟悉,但对于php来说是全新的,我能够在php中显示图像,但我不知道如何使用计时器以解决上述问题。
我该怎么办?我把一个有效的代码但我不想使用它,因为它只会更新网页的这一部分(因为while(1))?还有其他解决方案吗?如果我不能每秒显示超过20帧,那么这种脚本语言的帧速率是多少?什么因素在这件事中发挥作用?
由于
我的代码:
<?php
while(1)
{
$handle = @fopen("/var/www/CTX_ITX/Flag_File.txt", "r");
if ($handle) {
if(($buffer = fgets($handle, 10)) !== false)
{
if($buffer=="Yes)
{
echo "<img src = "result.jpg" alt='test' \>";
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
sleep(.01); //10 ms pause before starting again ....
}
?>
答案 0 :(得分:0)
PHP不适合您的任务。它响应请求。你的JS必须每30ms加载一次图像 我建议你看一下Node.JS和HTML5 WebSockets。这项技术使您能够在理论上快速发送图片而无需重新连接等(仅当您的连接足够快以处理流量时)