当它被卡住时如何调试curl对amazon s3的调用

时间:2009-11-25 09:22:44

标签: php curl amazon-s3

我正在使用PHP S3 class和此backup script来备份从Linux服务器到S3的~500Mb文件。对s3的调用被卡住(永不返回),top显示httpd进程,它消耗100%的CPU和1%的内存。较小的文件会被正确复制。

我的问题是,如果没有返回任何内容并且代码无限期地被卡住,我该如何调试它(它基本上是由S3类完成的CURL调用)。

另外,非常感谢任何关于如何解决这个问题的想法。

到目前为止我尝试过的事情 - 没有超时的PHP脚本。从调用S3中删除了SSL支持,为脚本启用了128M内存。

1 个答案:

答案 0 :(得分:2)

您可能需要直接更改S3脚本以找出失败的步骤,并可能从this page设置一些额外的curl选项。一些可能的设置是:

  • CURLOPT_CONNECTTIMEOUT
  • CURLOPT_LOW_SPEED_LIMIT
  • CURLOPT_LOW_SPEED_TIME

最后两个一起工作以指定何时放弃curl请求,第一个是在进行初始连接时。

对于curl本身的调试输出,您可以设置CURLOPT_VERBOSE并将文件分配给CURLOPT_STDERR以捕获输出。这应该有助于追踪问题所在。