phpperlfastcgimod-fcgid

PHP FastCGI Simple Counter


I am unable to understand and run a simple PHP script in FCGI mode. I am learning both Perl and PHP and I got the Perl version of FastCGI example below to work as expected.

Perl FastCGI counter:

#!/usr/bin/perl

use FCGI;

$count = 0;

while (FCGI::accept() >= 0) {

    print("Content-type: text/html\r\n\r\n",
          "<title>FastCGI Hello! (Perl)</title>\n",
          "<h1>FastCGI Hello! (Perl)</h1>\n",
          "Request number ", $++count,
          " running on host <i>$ENV('SERVER_NAME')</i>");

}

Searching for similar in PHP found talk about "fastcgi_finish_request" but have no clue how to accomplish the counter example in PHP, here is what I tried:

<?php
header("content-type: text/html");
$counter++;
echo "Counter: $counter ";
//http://www.php.net/manual/en/intro.fpm.php
fastcgi_finish_request(); //If you remove this line, then you will see that the browser has to wait 5 seconds
sleep(5);
?>

Solution

  • Perl is not PHP. This must not mean that you can not most often interchange things and port code between the two, however when it comes to runtime environments there are bigger differences you can not just interchange.

    FCGI is on the request / protocol level already which is fully abstracted in the PHP runtime and you therefore have not as much control in PHP as you would have with Perl and use FCGI;

    Therefore you can not just port that code.

    Next to that fastcgi_finish_request is totally unrelated to the Perl code. You must have confused it or thrown it in by sheer luck to give it a try. However it's not really useful in this counter example context.