Během dneška (6.8.2009) byl výpadek služby Twitter a koukal jsem, že mi to položilo php-frameworks.net na kolena.
Jak jsem se zjišťovat co s tím a proč mi to hlásí:
Zend_Http_Client_Adapter_Exception: Unable to Connect to tcp://twitter.com:80. Error #110: Connection timed out in /srv/lib/php/Zend/Http/Client/Adapter/Socket.php on line 213
Tento kód nějak selhal a výpadek nastal dříve, asi to vypadá na nějakou chybu v Zendu, protože se Zend_Service_Twitter_Exception nevrátí i při výpadku spojení jak jsem očekával.
try {
$twitter = new Zend_Service_Twitter($config->twitter->username, $config->twitter->password);
} catch (Zend_Service_Twitter_Exception $e) {
$this->logger->err("Exception caught importing twitter: {$e->getMessage()}\n");
}
Řešení je otestovat vlastní připojení předem ke kterému jsem se nakonec uchýlil.
// Testing connect to twitter
try {
$client = new Zend_Http_Client('http://twitter.com', array(
'maxredirects' => 0,
'timeout' => 5));
$response = $client->request();
} catch (Zend_Http_Client_Adapter_Exception $e) {
$this->logger->err("Exception caught connect twitter: {$e->getMessage()}\n");
}
// if have $response try connect twitter
if (isset($response)) {
try {
$twitter = new Zend_Service_Twitter($config->twitter->username, $config->twitter->password);
} catch (Zend_Service_Twitter_Exception $e) {
$this->logger->err("Exception caught importing twitter: {$e->getMessage()}\n");
}
if (isset($twitter)) {
$response = $twitter->status->friendsTimeline(array("count" => $config->twitter->count));
$this->view->twitter = $response;
} else {
$this->view->twitter = null;
}
}