Модуль для альтернативного способа работы через fastcgi

vovik

Новичок
Модуль для альтернативного способа работы через fastcgi

Всем доброго дня.

Сейчас доделываю для собственного использования пхп-модуль, обеспечивающий fastcgi внутри скрипта. Идея навеяна перловым модулем FCGI, очень хотелось аналогичный функционал для PHP. Я попробую в двух словах объянить что это такое и для чего нужно. Кто знаком с перловым аналогом - не узнает для себя ничего нового :)

Модуль пока еще весьма сырой, отражены основные идеи, а тщательное тестирование только предстоит.

Очень хотелось бы знать, интересно ли это кому-нибудь. Если интересно, я бы с удовольствием выслушал любой фидбэк, идеи дальнейшего развития и так далее.

Вот маленький примерчик, как это можно использовать.

PHP:
<?php

$cache = array(
    1 => 'Vasya',
    2 => 'Petya',
    3 => 'Eduard',
);

if (!fcgi_init('localhost', 12345)) {
    print ("fcgi_init() failed\n");
    exit(1);
}

while (fcgi_accept()) {
    $query = fcgi_get_query();
    $id = isset($query['id']) ? $query['id'] : 0;

    print "Content-type: text/html\r\n\r\n";

    if (isset($cache[$id])) {
        print "Hello, ".$cache[$id]." !";
    } else {
        print "Hello, Unknown !";
    }
}

?>
Скрипт висит как демон, в наших руках оказываются все возможности по управлению процессами, сигналами и так далее. Я вижу применение как обработку относительно большого количества обращений к относительно простому скрипту.

Про производительность. Собственно, ради чего все и затевалось. Думаю, что если вот так взять существующий скрипт и запустить, то при более-менее приличном количестве php кода она не будет значительно отличаться от того же fcgi sapi. Но! Скрипт можно проработать так, чтобы он кэшировал данные в своей памяти, создавал нужное количество процессов и тд. Должно работать очень быстро :)

Вот. Интересно, что по этому поводу думает коммьюнити.

Кому интересно глянуть - ссылка на исходники
 

vovik

Новичок
Автор оригинала: tony2001
лучше бы ты потратил это время на улучшение http://php-fpm.anight.org вместо переноса Сишного функционала в PHP.
Дык это. Функционал я никуда не переносил, это отдельный экстеншн.

fpm меня не устраивает в первую очередь тем, что это патч, который не собираются включать в официальный пхп. Кроме того, это все равно fcgi sapi. Задумка именно в том была, чтобы непосредственно на пхп сделать демона, обрабатывающего соединения.

Ну и с помощью pcntl несложно сделать уже сколько угодно воркеров, с какими угодно setuid и chroot, ограничение IP адресов и так далее.

То есть вместо готового sapi, который в любом случае умеет только то, чему его научили, можно сделать свой sapi.
 

tony2001

TeaM PHPClub
>Дык это. Функционал я никуда не переносил, это отдельный экстеншн.
речь о том, что это задача sapi, а не экстеншена.

>fpm меня не устраивает в первую очередь тем, что это патч, который не
>собираются включать в официальный пхп.

ну так сделай свой или уговори Найта, чтобы он изменил лицензию.

>Кроме того, это все равно fcgi sapi. Задумка именно в том была, чтобы >непосредственно на пхп сделать демона, обрабатывающего соединения.

вот именно ЭТО я и считаю в корне неверным.
 

vovik

Новичок
ну так сделай свой или уговори Найта, чтобы он изменил лицензию.
Вот я и сделал свой ... аналог. Идея показалась свежей, сел, реализовал. Поэтому и написал, что интересно было кто что скажет.

вот именно ЭТО я и считаю в корне неверным.
Понял твою точку зрения, задумался. Идея сама открывает недоступные ранее горизонты. Но потребует гораздо больше усилий при реализации.
 

tony2001

TeaM PHPClub
>Вот я и сделал свой ... аналог.

ну.. HTTP-сервер на PHP - тоже в каком-то смысле аналог Apache.
но никто в своём уме его не будет использовать на продакшене.
 

Alexandre

PHPПенсионер
tony2001 интересный проект,
попробую разобраться, может буду полезен.
кто из Россиян в нем участвует, с кем контактировать?

-~{}~ 13.03.08 16:15:

ага нашел - Андрей Нигматулин,
посмотрю сегодня вечером исходники.
 
Сверху