У меня проблема с функцией, которая не работает должным образом, поскольку я переместил свой сайт с общего хостинга на VPS (оба имеют одинаковую ОС Linux, php версии 5.2.9 и Perl версии 5.8.8).
Когда мой сценарий хранит удаленный файл в локальном каталоге, я регулярно запускаю простой сценарий php (5 секунд), используя XMLHttpRequest, этот сценарий php выполняет сценарий Perl, который возвращает текущий размер файла (байтуже загружен).
Вот код php:
<?php
if (isset($_GET['file'])) {
clearstatcache();
$file = $_GET['file'];
exec("/usr/bin/perl /home/xxxxxx/public_html/cgi-bin/filesize.pl $file", $output);
//print_r($output);
if (!empty($output) || $output[0] != "") {
$currentSize = $output[0];
file_put_contents('progress.txt', $currentSize);
} else {
...
...
}
}
?>
Вот код Perl
#!/usr/bin/perl
$filename = $ARGV[0];
$filepath = '/home/xxxxxx/public_html/tmp_dir/'.$filename.'.flv';
$filesize = -s $filepath;
print $filesize;
Когда я запускал эти скрипты на общем сервере,У меня не было проблем, и я мог видеть ход загрузки, но теперь размер файла печатается только тогда, когда удаленный файл полностью загружен, и я не вижу ход выполнения.
Я думаю, что мне нужно что-то изменитьв настройках php но я не уверен и не знаю что нужно менять.
ОК, извините / глупо, функция filesize () работает отлично, спасибо всем, ребята.