php daemon
Код:
<?php
$host = "localhost";
$port = 666;
set_time_limit(0);
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("Could not create socket\n");
$result = socket_bind($socket,$host,$port) or die("Could not bind to socket\n");
$result = socket_listen($socket,3) or die("Could not set up socket listener\n");
while(1) {
if(false === ($spawn = socket_accept($socket))) {
echo "Could not accept incoming connection\n";
break 2;
}
while(1) {
if(FALSE === ($input = socket_read($spawn,1024))) {
echo "Could not read input\n";
break 2;
}
switch(strtolower(trim($input))) {
case "hola" :
if(!@socket_write($spawn, "i'm here")) {
echo "Could not write to output\n";
break 2;
}
break;
case "bye" :
break 2;
break;
case "gotosleep" :
exit();
break;
}
}
socket_close($spawn);
}
socket_close($socket);
?>
$host = "localhost";
$port = 666;
set_time_limit(0);
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("Could not create socket\n");
$result = socket_bind($socket,$host,$port) or die("Could not bind to socket\n");
$result = socket_listen($socket,3) or die("Could not set up socket listener\n");
while(1) {
if(false === ($spawn = socket_accept($socket))) {
echo "Could not accept incoming connection\n";
break 2;
}
while(1) {
if(FALSE === ($input = socket_read($spawn,1024))) {
echo "Could not read input\n";
break 2;
}
switch(strtolower(trim($input))) {
case "hola" :
if(!@socket_write($spawn, "i'm here")) {
echo "Could not write to output\n";
break 2;
}
break;
case "bye" :
break 2;
break;
case "gotosleep" :
exit();
break;
}
}
socket_close($spawn);
}
socket_close($socket);
?>
все работает как и должно, но если не написать bye при завершении работы с демоном, а просто закрыть соединение, тогда процессор на сервере грузиться на 100%, как это обойти?
И вообще демоны на PHP - абсурд. Уж лучше на Perl.
2foxweb
не заставляй ставить штрафные балы такому заслуженному человеку. ответ без смысловой нагрузки =флейм. я не сторонник PHP вообще, но в данном случае - проблема совершенно не в выборе языка.