PHP FTP上传数千个文件

时间:2010-04-07 07:50:45

标签: php arrays upload ftp buffer

我编写了一个小型FTP类,用于将文件从本地服务器移动到远程服务器。它通过使用远程服务器上的文件数组检查本地文件数组来完成此操作。如果该文件存在于远程服务器上,则无需上传它。

该脚本适用于少量文件,但我注意到本地服务器可以传输多达3000多个图像文件,这似乎会导致脚本失败并且只传输100个左右。

如何修改脚本以处理数千个图像传输文件?

4 个答案:

答案 0 :(得分:3)

更频繁地运行cron,并将脚本限制为每次运行80个图像的上传。

答案 1 :(得分:0)

可能发生的是你花了太长时间来执行脚本(这不适用于命令行php)如果发生这种情况,你的脚本将被Web服务器停止。您可以更改php设置来修复它,但这不会很好地扩展(因为您的浏览器最终也会超时)。也许从命令行(称为cli php)运行脚本将起作用。

听起来我正在实施已经存在的东西。如果你能控制两台服务器,你应该看看rsync(对于linux)。

答案 2 :(得分:0)

如果问题是php或浏览器超时,你可以创建一个文件(例如下面的代码)和cron它或从浏览器调用。

<?
echo "Running cli syncfiles.php";
system("&php syncfiles.php"); // & pushes file to background processing on linux 
?>

如果您遇到问题,因为ftp会限制您的连接,或者在x时间内限制您的同步上传/下载,那么您可能会在代码中添加某种计时器。

<?
$counter=0;
for($i=0;$i<$numftpfiles;$i++)
{
   syncfile($i); // this represents your sync code
   usleep(250000); // sleep for 1/4 second
   $count++;
   if($count>50)
   {
     usleep(30000000); // sleep for 30 seconds
     $count=0;
   }
}
?>

答案 3 :(得分:0)

你可以先在php中压缩 http://www.php.net/manual/en/book.zip.php

然后上传一个更大的zip文件。总文件大小不太可能改变,但我发现在通过WAN传输大量文件时,无论如何都会更快。

- 将会