JQuery — PHP + Ajax, получить свежее изображение с веб-камеры

Я просто не могу заставить это работать на сервере Linux. На WAMP это работает хорошо.

По сути, я настроил веб-камеру, которая каждые 60 секунд загружает изображения в папку на FTP-сервере. Затем я создал сайт, где я вызываю Ajax для сканирования этой папки и получения последнего изображения (на основе времени создания).

Когда я захожу на страницу, действительно загружается самое свежее изображение, CHMOD установлены правильно. Но когда я жду на странице, вызываются новые запросы ajax, и возвращаемое изображение всегда одинаково, даже если на FTP уже загружены новые изображения — эти новые изображения пропускаются, и CHMOD также не устанавливается.

Я не знаю в чем проблема.

Вот что у меня есть:

index.php:

<img id='webcam-img' alt='Webkamera' src='' />

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script language="JavaScript" type="text/javascript">
function getImage() {
var src = '';
$.ajax({
url: "ajax-get-webcam-image.php",
async: false,
success: function(data){
src = data;
}
});
return src;
}

function updateImage() {
var src = getImage();
$("#webcam-img").attr("src", src + "?timestamp=" + new Date().getTime());
setTimeout(updateImage, 5000);
}

updateImage();
</script>

Ajax-получить веб-камера-image.php:

<?php
$folder = "images/webcam"; // the folder with images

function getImages($dir) {
$allFiles = scandir($dir);
$files = array_diff($allFiles, array('.', '..'));
foreach ($files as $f) {
chmod($dir . '/' . $f, 0644); // uploaded images are set to 0640 and can't be read on a page. Must set CHMOD to 644
}

$ignored = array('.', '..');    // ignore this

$files = array();
foreach (scandir($dir) as $file) {
if (in_array($file, $ignored)) continue;
$files[$file] = fileatime($dir . '/' . $file);
}

$files = array_keys($files);    // sort images
$files = array_reverse($files);

//     foreach ($files as $k => $file) {
//         if ($k > 9) {               // delete old images, leave 10 freshest on server
//             unlink(__DIR__ . '/' . $dir . '/' . $file);
//         }
//     }

return ($files[0]) ? $files[0] : false; // return freshest image
}

$img = getImages($folder);

echo $folder . '/' . $img;
?>

Спасибо за советы!

0

Решение

Итак, это была проблема с кэшированием, поэтому я изменил вызов ajax с добавлением t=" + new Date().getTime() на URL-адрес параметра:

function getImage() {
var src = '';
$.ajax({
url: "ajax-get-webcam-image.php?t=" + new Date().getTime(),
async: false,
success: function(data){
src = data;
}
});
return src;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]