2014-10-10 106 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, ''); 
相关问题