[php]
<?php
//Accpet the http client request and generate response content.
//As a demo, this function just send "PHP HTTP Server" to client.</pre>
<!--more-->
<pre>

function handle_http_request($address,$port)
{
$max_backlog=16;
$res_content="HTTP/1.1 200 OK"."\r\n".
"Content-Length:15"."\r\n".
"Content-Type:text/plain;charset=UTF-8"."\r\n\r\n".
"PHP HTTP Server";

$res_len=strlen($res_content);
//Create, bind and listen to socket
if(($socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))===FALSE)
{
echo "Create socket failed!\n";
exit;
}
if((socket_bind($socket,$address,$port))===FALSE)
{
echo "Bind socket failed!\n";
exit;
}
if((socket_listen($socket,$max_backlog))===FALSE)
{
echo "Listen to socket failed!\n";
exit;
}

//Loop
while(TRUE)
{
if(($accept_socket=socket_accept($socket))===FALSE)
{
continue;
}else{
socket_write($accept_socket,$res_content,$res_len);
socket_close($accept_socket);
}
}
}
//Run as daemon process.
function run(){
if(($pid1=pcntl_fork())===0)
//First child process
{
posix_setsid();//Set first child process as the session leader.
if(($pid2=pcntl_fork())===0)
//Second child process, which run as daemon.
{
//Replaced with your own domain or address.
handle_http_request('127.0.0.1',9840);
}else{
//First child process exit;
exit;
}
}else{
//Wait for first child process exit;
pcntl_wait($status);
}
}
//Entry point.
run();
?>
[/php]

最后更新于 2015年1月30日

php deamon 后台服务 php http server
标签: