Có cách nào trong PHP để thực hiện một số hành động (ví dụ chèn mysql) nếu không có yêu cầu mới cho biết 1 giây?Có cách nào để thực thi tập lệnh PHP nếu không có yêu cầu mới nào trong một thời gian không?
Điều tôi đang cố gắng đạt được là xác định bắt đầu và kết thúc chuỗi hình ảnh được gửi từ camera IP. Máy ảnh gửi chuỗi hình ảnh về chuyển động được phát hiện và dừng gửi khi chuyển động dừng lại. Tôi biết rằng máy ảnh tạo ra 5 hình ảnh mỗi giây (mỗi 200ms). Khi không có hình ảnh mới trong hơn 1 giây, tôi muốn gắn cờ hình ảnh cuối cùng khi kết thúc chuỗi, chèn một bản ghi vào mysql, đặt img vào thư mục thích hợp (tất cả các imgs khác từ cùng một chuỗi đã được viết) và hướng dẫn ứng dụng để tạo một đoạn hình ảnh MJPEG trong thư mục đó. Ngay bây giờ tôi có thể xác định hình ảnh đầu tiên trong chuỗi bằng cách sử dụng Alternative PHP cash để tiết kiệm thời gian tham chiếu từ yêu cầu trước đó, nhưng vấn đề là vì chuỗi hình ảnh tiếp theo có thể xảy ra vài giờ sau đó và tôi không thể hướng dẫn PHP đóng trình tự KHÔNG có yêu cầu nào trong một thời gian, chỉ khi yêu cầu đầu tiên của chuỗi mới đến.
Tôi thực sự cần trợ giúp về vấn đề này. PHP My hút gần như là tiếng Anh của tôi ... :)
Pseudo code cho vấn đề của tôi:
<?php
if(isset($headers["Content-Disposition"]))
{
$frame_time = microtime(true);
if(preg_match('/.*filename=[\'\"]([^\'\"]+)/', $headers["Content-Disposition"], $matches))
{ $filename = $matches[1]; }
else if(preg_match("/.*filename=([^ ]+)/", $headers["Content-Disposition"], $matches))
{ $filename = $matches[1]; }
}
preg_match("/(anpr[1-9])/", $filename, $anprs);
$anpr = $anprs[1];
$apc_key = $anpr."_last_time"; //there are several cameras so I have to distinguish those
$last = apc_fetch($apc_key);
if (($frame_time - $last)>1)
{
$stream = "START"; //New sequence starts
} else {
$stream = "-->"; //Streaming
};
$file = fopen('php://input', 'r');
$temp = fopen("test/".$filename, 'w');
$imageSize = stream_copy_to_stream($file, $temp); //save image file on the file system
fclose($temp);
fclose($file);
apc_store($apc_key, $frame_time); //replace cashed time with this frame time in APC
// here goes mysql stuff...
/* Now... if there is no new requests for 1 second $stream = "END";
calling app with exec() or similar to grab all images in the particular folder and make
MJPEG... if new request arrives cancel timer or whatever and execute script again. */
?>
vấn đề thú vị, có lẽ khi hình ảnh đầu tiên phát hiện ra một tập tin nền \ script mà ngủ trong 10 giây sau đó kiểm tra xem nếu chuyển động là hơn nếu không ngủ một lần nữa, vòng lặp cho đến khi done.OR một công việc cron bao giờ phút kiểm tra chống lại db \ file date –
Những gì tôi đang tìm kiếm thực sự là một cách (nếu có thể) để chạy bộ đếm thời gian async mà tôi có thể hủy bỏ nếu yêu cầu mới đến ... Tôi là một người javascript vì vậy có lẽ những đám mây của tôi lý luận với PHP. Tạo tập tin con/tập lệnh trông đầy hứa hẹn. Tôi sẽ nhìn vào đó. – Gawran