PHP Application Server

This is a discussion on PHP Application Server within the PHP Language forums, part of the PHP Programming Forums category; Hi people, I'm developing the first PHP Application Server. It can run PHP classes that extends the HttpPhplet interface ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 11-14-2003
Luca Mariano
 
Posts: n/a
Default PHP Application Server

Hi people,
I'm developing the first PHP Application Server.
It can run PHP classes that extends the HttpPhplet interface with the same
methods of javax.http.HttpServlet.
The phplet are like servlet, they runs into a container and implements
init(), service(), destroy() methods.
It's a brand new concept for PHP, but we have a solid experience with java
servlets and the idea behind this (a web application with a servlet complete
lifecycle) it's a valid one.
The first releases of Phplet Application Server are already avaible for
download! I placed the project into public domain at
http://phplet.sourceforge.net .
Of course every experienced PHP developer is invited to join the project.


Reply With Quote
  #2 (permalink)  
Old 11-14-2003
Louis-Philippe Huberdeau
 
Posts: n/a
Default Re: PHP Application Server

Actually, it already exists: SRM (Script Running Machine). The project
was started by Derick Rethans and as I know of, he's currently working
on a PHP 5 version.

Luca Mariano wrote:
> Hi people,
> I'm developing the first PHP Application Server.
> It can run PHP classes that extends the HttpPhplet interface with the same
> methods of javax.http.HttpServlet.
> The phplet are like servlet, they runs into a container and implements
> init(), service(), destroy() methods.
> It's a brand new concept for PHP, but we have a solid experience with java
> servlets and the idea behind this (a web application with a servlet complete
> lifecycle) it's a valid one.
> The first releases of Phplet Application Server are already avaible for
> download! I placed the project into public domain at
> http://phplet.sourceforge.net .
> Of course every experienced PHP developer is invited to join the project.
>
>


Reply With Quote
  #3 (permalink)  
Old 11-14-2003
Matthias Esken
 
Posts: n/a
Default Re: PHP Application Server

Louis-Philippe Huberdeau <lphuberdeau@sympatico.ca> schrieb:

> Actually, it already exists: SRM (Script Running Machine). The project
> was started by Derick Rethans and as I know of, he's currently working
> on a PHP 5 version.


That would be fine. There's no status update on his website since last
year. *sigh*

Regards,
Matthias
Reply With Quote
  #4 (permalink)  
Old 11-17-2003
Luca Mariano
 
Posts: n/a
Default Re: PHP Application Server

Matthias Esken ha scritto nel messaggio ...
>Louis-Philippe Huberdeau <lphuberdeau@sympatico.ca> schrieb:
>
>> Actually, it already exists: SRM (Script Running Machine). The project
>> was started by Derick Rethans and as I know of, he's currently working
>> on a PHP 5 version.

>
>That would be fine. There's no status update on his website since last
>year. *sigh*
>
>Regards,
> Matthias
>


Thanks for the reference to this interesting project, I had a look to it
but I must correct Louis-Philippe...
SRM is a totally different project, since it aims to tier the PHP webapp
running cycle into more than one level (web server - SRM - browser). It uses
a C daemon, while my project is entirely written in PHP.
My approach to the problem "writing an application server for PHP" is quite
simpliest.
I'm simply writing in PHP an AP similar to Tomcat:
- tomcat is written in Java and serves servlet
- phplet is written in PHP and serves phplet.
From an user (developer) point of view this have many advantages, because
the persistence is not limited to single
objects that we're going to store into a container, but is extended to the
whole servlet context.
In poor words, a phplet must have a behaviour similar to a servlet; at the
bottom of this msg I attached the code for a simple web application that
reads the table defined into a given DB (for the moment).
You can see that phplet philosophy match exactly servlet one; into the
init() method you initialize all objects that will be useful; into the
service() method you receive a Request object from the container, make your
PHP stuff (exactly like all PHP scripts), then fill the Response with
output; the destroy() method is executed at container shutdown.
It's just like tomcat does...

<?php
/**
* A replacement for phpMyAdmin
* @author Luca Mariano <luca.mariano@email.it>
*/
require_once 'DB.php';
require_once 'HTML/Table.php';

DEFINE ('DNS', 'mysql://user:pass@127.0.0.1/database');

class dbManager extends HttpPhplet {
var $initTime;
var $dbObj; // the PEAR::DB object used to manipulate DB
var $tables; // [array] list of tables into this database
var $_errors;

function init(&$config)
{
$this->initTime = gmdate("D, d M Y H:i:s T");
$this->tables = array();
$this->_dbConnect();
}

function service(&$request, &$response)
{
switch ($request->getParameter("action")) {
case "showtables":
$response->write($this->_showTables());
break;
case "tablestructure":
$response->write("TO DO");
break;
case "tablecontent":
$response->write("TO DO");
break;
default:
$response->write("Unsupported request.");
}
}

function destroy()
{
$this->dbObj->disconnect();
}

function _dbConnect()
{
$this->dbObj = &DB::connect(DNS);
if (DB::isError($this->dbObj)) {
$this->_errors[] = $this->dbObj->getMessage();
return false;
}
return true;
}

function _showTables()
{
if (count($this->tables) == 0) {
$this->_getTables();
}

if (count($this->_errors) > 0 && count($this->tables) == 0)
return print_r($this->_errors, true);

$table = new HTML_Table();

for($i = 0; $i < count($this->tables); $i++) {
$table->setCellContents($i, 0, $this->tables[$i]);
}
$table->setAutoGrow(true);
$table->setHeaderContents(0, 0, "Tables");
$altRow = array("bgcolor" => "lightblue");
$table->altRowAttributes(1, null, $altRow);

return $table->toHTML();
}

function _getTables()
{
$conn = true;
if (!DB::isConnection($this->dbObj)) {
$conn = $this->_dbConnect();
}
if ($conn) {
$result = $this->dbObj->query("SHOW TABLES");
// Always check that $result is not an error
if (DB::isError($result)) {
$this->_errors[] = $result->getMessage();
} while ($row = $result->fetchRow()) {
$this->tables[] = $row[0];
}
$result->free();
}
}
}



Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 06:49 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0