mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-09-28 19:05:55 +08:00
running PHP scripts in ULib
parent
ae77235c7c
commit
ff5a3abafd
106
Home.md
106
Home.md
|
@ -1 +1,105 @@
|
|||
Welcome to the ULib wiki!
|
||||
#Running PHP scripts in ULib
|
||||
***
|
||||
Download and install the last release of ULib.
|
||||
I suggest for to have many info to configure ULib with debug (*./configure --enable-debug ...*).
|
||||
From the downloaded source copy the shell script **php.sh**, that you can found in *ULib-1.4.2/tests/examples*, to some workng directory, say */var/www/example*.
|
||||
|
||||
***
|
||||
The firt time we run **./php.sh** inside */var/www/example* we must have the following directory structure:
|
||||
|
||||
**./php.sh**
|
||||
./userver.cfg
|
||||
./err: *php?.err*
|
||||
./log: *php?.log*
|
||||
./out: *php?.out*
|
||||
./www: **info.php**
|
||||
./www/cgi-bin: **index.php**
|
||||
><?php phpinfo(); ?>
|
||||
***
|
||||
####1) You can safely run PHP scripts using ULib’s CGI support.
|
||||
|
||||
Run **./php.sh** with argument 1: (we have as output something like that)
|
||||
~~~~
|
||||
stefano: /var/www/example # ./php.sh 1
|
||||
PID = 26222
|
||||
stefano: /var/www/example # curl http://localhost:8080/cgi-bin/index.php
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||
<style type="text/css">
|
||||
body {background-color: #ffffff; color: #000000;}
|
||||
...
|
||||
stefano: /var/www/example # kill 26222
|
||||
~~~~
|
||||
The downside of this approach is the latency caused by the spawn of a new PHP interpreter at each request as we can see in *./log/php1.log*:
|
||||
~~~~
|
||||
03/08/15 18:47:51 (pid 18714)> request "/cgi-bin/index.php" run in 219 ms
|
||||
~~~~
|
||||
####2) To improve performance we can rely on a separate PHP processor to handle PHP requests proxed by FastCGI protocol. Most often, this processing is handled with php-fpm.
|
||||
|
||||
[See the official PHP documentation for fpm for all possible configuration options.](http://www.php.net/manual/en/install.fpm.configuration.php)
|
||||
|
||||
a) **TCP socket (IP and port) approach**
|
||||
Edit *php-fpm.conf*
|
||||
**listen = 127.0.0.1:9000**
|
||||
~~~~
|
||||
stefano: /var/www/example # /etc/init.d/php-fpm start
|
||||
Starting PHP FastCGI Process Manager ...
|
||||
stefano: /var/www/example # ./php.sh 2a
|
||||
PID = 26222
|
||||
stefano: /var/www/example # curl http://localhost:8080/info.php
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||
<style type="text/css">
|
||||
body {background-color: #ffffff; color: #000000;}
|
||||
...
|
||||
stefano: /var/www/example # kill 26222; /etc/init.d/php-fpm stop
|
||||
Stopping PHP FastCGI Process Manager ...
|
||||
~~~~
|
||||
Now the latency is much better as we can see in *./log/php2a.log*:
|
||||
~~~~
|
||||
03/08/15 20:21:00 (pid 2183)> request "/info.php" run in 8 ms
|
||||
~~~~
|
||||
b) **unix domain socket (UDS) approach**
|
||||
Edit *php-fpm.conf*
|
||||
**listen = /tmp/fcgi.socket**
|
||||
~~~~
|
||||
stefano: /var/www/example # /etc/init.d/php-fpm start
|
||||
Starting PHP FastCGI Process Manager ...
|
||||
stefano: /var/www/example # ./php.sh 2b
|
||||
PID = 26222
|
||||
stefano: /var/www/example # curl http://localhost:8080/info.php
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||
<style type="text/css">
|
||||
body {background-color: #ffffff; color: #000000;}
|
||||
...
|
||||
stefano: /var/www/example # kill 26222; /etc/init.d/php-fpm stop
|
||||
Stopping PHP FastCGI Process Manager ...
|
||||
~~~~
|
||||
The latency is not changed as we can see in *./log/php2b.log*:
|
||||
~~~~
|
||||
03/08/15 20:21:00 (pid 2183)> request "/info.php" run in 8 ms
|
||||
~~~~
|
||||
####3) To get superior performance you will want to embed the PHP interpreter in the Ulib, ie to configure ULib with php embedded (*./configure --with-php-embedded ...*).
|
||||
|
||||
A bunch of distros (such as Fedora, Red Hat and CentOS) include a *php-embedded* package.
|
||||
Install it, along with *php-devel* and you should be able to build ULib with PHP interpreter embedded
|
||||
(*Ubuntu 15.04*: **apt-get install libphp5-embed php5-dev**).
|
||||
|
||||
Reinstall ULib and run **./php.sh** with argument 3: (we have as output something like that)
|
||||
~~~~
|
||||
stefano: /var/www/example # ./php.sh 3
|
||||
PID = 26222
|
||||
stefano: /var/www/example # curl http://localhost:8080/info.php
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||
<style type="text/css">
|
||||
body {background-color: #ffffff; color: #000000;}
|
||||
...
|
||||
stefano: /var/www/example # kill 26222
|
||||
~~~~
|
||||
The latency is now better as we can see in *./log/php3.log*:
|
||||
~~~~
|
||||
03/08/15 20:21:00 (pid 2183)> request "/info.php" run in 7 ms
|
||||
~~~~
|
||||
***
|
||||
|
|
Loading…
Reference in New Issue
Block a user