Do I still CLI version of PHP

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
On my webserver:
*PHP version is 5.3.6
*server API: CGI/FastCGI

I need to run a socket server. A sample snippet is below:

#!/usr/local/bin/php -q


//file name: server_socket.php


while (true) { // Loop continuously

// Setup clients listen socket for reading

$read[0] = $sock;

$ready = socket_select($read,null,null,null);

// If a client is trying to write - handle it now

for ($i = 0; $i < $max_clients; $i++) // for each client


if (in_array($client[$i]['sock'] , $read))


$input = socket_read($client[$i]['sock'] , 1024);

if ($input == null)

unset($client[$i]); // Zero length string meaning disconnected

$n = trim($input);

if ($input == 'exit') {

socket_close($client[$i]['sock']); // requested disconnect

} elseif ($input) {

// strip white spaces and write back to user

$output = ereg_replace("[ \t\n\r]","",$input).chr(0);



} else {





} // end while




1. Do still need the line '#!/usr/local/bin/php -q' is I call the file via
http, eg http://domain/server_socket.php, because the program is looping ?

2. If the answer to Q1is yes, how do I run my server program (I think the
version on my server is CGI) ?


Re: Do I still CLI version of PHP

sl@exabyte wrote:

Quoted text here. Click to load it

No, as the web service  will be calling the php interpreter, but as soon as
you leave the "page" with your browser the script will die.

Quoted text here. Click to load it

You need to have shell access and run the script in background or in a screen
(or rewrite it so it can be run as a daemon).



Re: Do I still CLI version of PHP

Am 19.02.2012 08:13, schrieb sl@exabyte:
Quoted text here. Click to load it

Quoted text here. Click to load it

AFAIK you would never run a service, especially not a PHP service, in the web

In the web server normal operation is Request -> Script start -> script output ->
script end ->end of request. Long running scripts are abuse.

Either run your script as true daemon, or use a "ad hoc daemon" solution like
your script in "screen", or starting it with "nohup".


Site Timeline