我以前问过一个问题,并得到了答案,但我想我遇到了另一个问题。
我正在使用的 php 脚本执行此操作:
1 - 将文件从我的备份服务器传输到我的服务器
2 - 完成传输后,它会使用 curl 向其发送一些发布数据,从而创建一个 zip 文件
3 - 完成后,会回显结果,具体取决于结果;传输文件,或者什么都不做。
我的问题是:当文件足够小(小于 500MB)时,它会创建它,然后传回没有问题。当它更大时,它会超时,完成在远程服务器上创建 zip,但是因为它超时它不会被传输。
我从备份服务器上的命令行运行它。我在 php 脚本中有这个:
set_time_limit(0); // ignore php timeout
ignore_user_abort(true); // keep on going even if user pulls the plug*
while(ob_get_level())ob_end_clean(); // remove output buffers
但是当我跑步时它仍然超时sudo php backup.php
是否使用 curl 使其超时,就像制作 zip 的另一端的浏览器一样?我认为问题在于响应没有被回显。
编辑:(@symcbean) 我什么也没看到,这就是我在挣扎的原因。当我从浏览器运行它时,我在地址栏中看到加载内容。大约 30 秒后,它就停止了。当我从命令行执行此操作时,同样的处理。30秒,它就停止了。这只发生在需要创建大拉链时。
它是通过文件调用的。该文件加载一个类,将连接信息发送到该类。它与服务器联系以制作 zip,将 zip 传回,对其执行一些操作,然后将其传输到 S3 进行归档。
它登录到远程服务器,使用 curl 上传文件。在得到有效响应后,它会再次将文件的位置作为 url 卷曲(我总是知道它是什么),这会启动我刚刚传输过来的 php 文件。zip 总是被创建没有问题,即使高达 22GB,当然有时需要很长时间。之后,它等待“创建”的响应。等待那个响应是它死亡的地方。
所以拉链总是被创建,但等待时间是“我认为”让它消亡的原因。
第二次编辑: 我从命令行尝试了这个:
$ftp_connect= ftp_connect('domain.com');
$ftp_login = ftp_login($ftp_connect,'user','pass');
ftp_pasv($ftp_connect, true);
$upload = ftp_put($ftp_connect, 'filelist.php', 'filelist.php', FTP_ASCII);
$get_remote = 'filelist.php';
$post_data = array (
'last_bu' => '0'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'domain.com/'.$get_remote);
curl_setopt($ch, CURLOPT_HEADER, 0 );
// adding the post variables to the request
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//echo the following to get response
$response = curl_exec($ch);
curl_close($ch);
echo $response;
得到了这个:
<HTML>
<HEAD>
<TITLE>500 Internal Server Error</TITLE>
</HEAD><BODY>
<H1>Internal Server Error</H1>
The server encountered an internal error or
misconfiguration and was unable to complete
your request.<P>
Please contact the server administrator to inform of the time the error occurred
and of anything you might have done that may have
caused the error.<P>
More information about this error may be available
in the server error log.<P>
<HR>
<ADDRESS>
Web Server at domain.com
</ADDRESS>
</BODY>
</HTML>
同样,错误日志是空白的,仍会创建 zip,但由于创建超时约 650MB,我无法得到响应。