我有一个功能不能正常工作,因为我已经将我的网站从共享主机移动到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