2014-10-10 130 views
1

我在找到DeferredEventJavaWorker後做了一點研究,想知道是否可以通過cli/php直接在fpm上運行一個php腳本。如何通過cli/php在fpm上運行php腳本?

java和ruby有兩個工作者實現,最終用一些參數調用fpm,我認爲它也應該可以用php,對不對?

這裏從Java工人片段:

FCGIConnection connection = FCGIConnection.open(); 
connection.connect(new InetSocketAddress(message.getHeader("fastcgi_host"), Integer.parseInt(message.getHeader("fastcgi_port")))); 

connection.beginRequest(PathResolver.resolve(message.getHeader("dispatch_path"))); 
connection.setRequestMethod("POST"); 

byte[] postData = ("DEFERRED_DATA=" + message.getData()).getBytes(); 

有一個命令調用cgi-fcgisource)送東西FPM:

SCRIPT_NAME=/ping \ 
SCRIPT_FILENAME=/ping \ 
REQUEST_METHOD=GET \ 
cgi-fcgi -bind -connect 127.0.0.1:9000 

是否有還設有一個圖書館或集成功能PHP來做到這一點?

我知道在PHP中集成的shell函數,但我希望有另一種方式來做到這一點。

+0

有三個功能,你必須知道: EXEC - 執行外部程序。 系統 - 執行外部程序並顯示輸出。 shell_exec - 通過shell執行命令並將完整的輸出作爲字符串返回。 – 4EACH 2014-10-10 13:54:00

回答

1

最後,我找到了一個實現的PHP:

https://github.com/ebernhardson/fastcgi/

用法很簡單:

$client = new \EBernhardson\FastCGI\Client('localhost', '8989'); 
// OR 
$client = new \EBernhardson\FastCGI\Client('/var/run/php5-fpm.sock'); 

$environment = [ 
    'REQUEST_METHOD' => 'GET', 
    'SCRIPT_FILENAME' => '/full/path/to/script.php', 
]; 
$client->request($environment, '');