Hi.
Hab folgendes Script für die Benutzerprofile meines Forums laufen. Es überprüft den Online Status von ICQ, YIM, AIM, WLM und Skype. Der Timeout (250ms pro URL) ist insbesondere dank des lahmen ICQ-Servers recht wichtig. Aber irgendwie scheint dieser nicht zu greifen: Manche Profile brauchen Minuten, bis sie geladen sind.
Für eine paar Tipps wär ich euch sehr dankbar!
[ edit, siehe Post #3 ]
Hab folgendes Script für die Benutzerprofile meines Forums laufen. Es überprüft den Online Status von ICQ, YIM, AIM, WLM und Skype. Der Timeout (250ms pro URL) ist insbesondere dank des lahmen ICQ-Servers recht wichtig. Aber irgendwie scheint dieser nicht zu greifen: Manche Profile brauchen Minuten, bis sie geladen sind.
Für eine paar Tipps wär ich euch sehr dankbar!
[ edit, siehe Post #3 ]
PHP-Code:
function aimyim_status($id,$host) {
if ($id === '') return;
switch ($host) {
case 'yahoo':
$url = 'http://opi.yahoo.com/online?u='.$id.'&m=a&t=1'; break;
case 'aim':
$url = 'http://big.oscar.aol.com/'.$id.'?on_url=true&off_url=false'; break;
case 'icq':
$url = 'http://status.icq.com/online.gif?icq='.$id; break;
case 'msn':
$url = 'http://messenger.services.live.com/users/'.$id.'/presence'; break;
case 'skype':
$url = 'http://mystatus.skype.com/'.$id.'.num'; break;
default:
return; // unknown host
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 100);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 250);
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = trim(curl_exec($ch));
if ($result == '') return 'unknown';
switch ($host) {
case 'yahoo':
$online = $result != '00'; break;
case 'aim':
$online = stripos($result, 'true'); break;
case 'icq':
$online = stripos($result, 'online1'); break;
case 'msn':
$online = stripos($result, 'offline') === false; break;
case 'skype':
$online = intval($result) == 1; break;
}
return $online ? 'online' : 'offline';
}
Kommentar