Php对无响应curl的处理

Php对无响应curl的处理,php,curl,Php,Curl,我有一个php脚本,它使用curl从外部站点获取数据,然后在三分钟后重新加载自己,获取新数据并显示更新。它工作得很好,但如果出现网络故障,我认为它没有得到响应,php只是挂起,没有返回错误或任何东西。然后需要手动终止这些挂起过程 我如何处理这种情况?调整卷曲选项?修改它监视的无响应curl的php脚本?或者通过ajax处理从浏览器到应用程序的所有事情,包括启动一个杀死挂起的php进程的脚本 解决方案:我添加了 curl_setopt($ch, CURLOPT_FAILONERROR = tru

我有一个php脚本,它使用curl从外部站点获取数据,然后在三分钟后重新加载自己,获取新数据并显示更新。它工作得很好,但如果出现网络故障,我认为它没有得到响应,php只是挂起,没有返回错误或任何东西。然后需要手动终止这些挂起过程

我如何处理这种情况?调整卷曲选项?修改它监视的无响应curl的php脚本?或者通过ajax处理从浏览器到应用程序的所有事情,包括启动一个杀死挂起的php进程的脚本


解决方案:我添加了

curl_setopt($ch, CURLOPT_FAILONERROR = true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
到我的curl中,并将这些错误的捕获添加到我的响应检查部分。从概念上讲,这就是所需要的一切,CURLOPT_CONNECTTIMEOUT似乎没有必要,因为我已经设置了重新加载以防出现错误


它可以手动断开连接,但我还没有看到脚本如何处理现实生活中的网络故障。应该没问题。

要处理网络问题,请使用
CURLOPT\u CONNECTTIMEOUT
选项定义一些秒数。它将等待给定的秒数连接到目标主机

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
并使用
CURLOPT_TIMEOUT
选项定义您希望允许特定操作的curl的秒数。如果目标服务器不释放连接,这将非常有用

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

选中此复选框,添加一个自定义异常类作为错误处理程序,并在卷发周围放置一个try-catch块。