0
能否幫助我在PHP中自定義以下cron腳本。該腳本正在服務器中創建許多後臺進程。一天後,服務器正忙,MYSQL服務器崩潰。使服務器繁忙的UDP cron作業
以下腳本有什麼問題。我需要這個腳本不斷地收聽特定的UDP端口。所以它被設置爲一個cron jon,它將運行每一個mits。
set_time_limit(60);
class pingtype
{
function rotate()
{
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '50.50.50.50', 9091);
$from = '';
$port = 0;
$bytes_received = socket_recvfrom($socket, $buf, 150, MSG_PEEK, $from, $port);
if ($bytes_received == -1)
{
die('An error occured while receiving from the socket');
echo "Received $buf from $from\n";
}
echo "Received $buf from remote address $from and remote port $port";
$hex_string_buf = "HEX: ".$this->strToHex($buf)." String: ".$buf;
$link = mysql_connect("localhost", "user_database", "123") or die ("Errror in connection ".mysql_error());
mysql_select_db("database") or die ("Error in select ".mysql_error());
$sql = "INSERT INTO socket SET contents='".$hex_string_buf."' ";
mysql_query($sql) or die ("Error in query ".mysql_error());
mysql_close($link);
// close socket and delete own .sock file
socket_close($socket);
usleep(1000);
}
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= str_pad(dechex(ord($string[$i])), 3);
}
return $hex;
}
function hexToStr($hex)
{
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
{
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
}
for($i=1;$i<=6000;$i++)
{
$object_pingtype = new pingtype();
$object_pingtype->rotate();
}
減少了輪換和時間。有什麼辦法可以將這個腳本作爲守護進程來運行。現在每次運行cron時,都會爲此創建一個單獨的進程ID。這使服務器繁忙。 –