PHP / Perl файловая функция не работает на новом сервере - PullRequest
0 голосов
/ 16 мая 2011

У меня проблема с функцией, которая не работает должным образом, поскольку я переместил свой сайт с общего хостинга на 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 () работает отлично, спасибо всем, ребята.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Если вам нужен размер файла, вы также можете просто вызвать функцию filesize из PHP и избежать полного использования perl.

1 голос
/ 16 мая 2011

Возможно, проблема связана с другим расположением файла.Вы уверены, что файл '/home/xxxxxx/public_html/tmp_dir/'.$filename.'.flv' существует?Вы можете проверить это с помощью:

if (-e '/home/xxxxxx/public_html/tmp_dir/'.$filename.'.flv')

Помните, что вместо этого вы можете использовать PHP filesize():

<?php
if (isset($_GET['file'])) {
    clearstatcache();
    $file = $_GET['file'];
    if (file_exists("/home/xxxxxx/public_html/tmp_dir/$file.flv") {
        $currentSize = filesize("/home/xxxxxx/public_html/tmp_dir/$file.flv");
        file_put_contents('progress.txt', $currentSize);
    } else {
        ...
        ...
    }
}
?>
...