如何优雅地处理崩溃的API

如何优雅地处理崩溃的API

问题描述:

由于twitter今天关闭,我正在考虑如何在API停止时处理对API的调用。如果我使用CURL来调用他们的api,我该如何导致脚本快速失败并处理错误,以免减慢应用程序的速度?如何优雅地处理崩溃的API

也许使用某种缓存来确定twitter是否启动或关闭。在数据库或服务器端文件中记录来自api的无效响应。一旦你连续得到两个/三个/一些其他数量的无效响应,在x时间内禁用对api的所有请求。

经过x次的时间后,尝试请求,如果它仍然关闭,请再次禁用x分钟。

如果您的服务器可以运行CRON作业,请考虑制作一个脚本,每隔几分钟检查一次有效响应的api。如果发现它已关闭,请禁用请求直至其恢复。至少在这种情况下,服务器将进行测试,用户不必是豚鼠。

使用curl_setopt

curl_setopt($yourCurlHandle, CURLOPT_CONNECTTIMEOUT, '1'); // 1 second 

如果使用卷曲> = 7.16.2和PHP> = 5.2.3有CURLOPT_CONNECTTIMEOUT_MS

+0

唯一的问题是,它不能分辨慢速连接和关闭api之间的区别。 – 2009-06-16 22:22:55

+0

如果超时,它会返回true吗? – Tim 2009-06-16 22:23:16

使用curl_getinfo获得卷曲响应代码或内容长度和检查这些。

$HttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);