我有一個功能不能正常工作,因爲我已經將我的網站從共享主機移動到VPS(都具有相同的Linux操作系統,PHP版本5.2.9和Perl 5.8.8版)。PHP/Perl文件大小功能不能在新服務器上工作
當我的腳本將遠程文件存儲到本地目錄中時,我使用XMLHttpRequest定期(5秒)運行一個簡單的php腳本,該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()函數工作正常,謝謝大家。
你爲什麼叫Perl腳本剛剛得到的文件大小? PHP可以爲你做這件事,你不需要那裏的'exec'。 – Konerak 2011-05-16 06:54:11
@ Konerak - 你怎麼做到的? – Maxime 2011-05-16 06:59:48
@ Mario - 這不是上傳,我使用cURL下載遠程文件。 – Maxime 2011-05-16 07:01:35