根據(jù)老大的Merge情況來看,最小的版本可能是 version >= 4.0.40,協(xié)議實現(xiàn)請參考:
https://github.com/walkor/workerman/pull/784
<?php
var_dump($_POST, $_GET, date('Y-m-d H:i:s'));
<?php
use Workerman\Worker;
use Workerman\Protocols\FastCGI\Request;
use Workerman\Connection\AsyncTcpConnection;
require_once dirname(__FILE__, 1) . '/workerman/Autoloader.php';
$worker = new Worker();
$worker->name = "FastCGI-Client";
$worker->onWorkerStart = function($worker){
//or use UNIX socket
$connection = new AsyncTcpConnection("unix:///tmp/fpm.sock");
$connection->protocol = "\\Workerman\\Protocols\Fcgi";
//or use TCP socket
$connection = new AsyncTcpConnection("fcgi://127.0.0.1:9000");
$connection->onConnect = function($connection){
$total_request = 100;
for($i = 0; $i < $total_request; $i++)
{
$request = new Request();
$request->setScript("/path/to/script/cgi.php")
->setRequestMethod('post')
->setKeepAlive(true) //default is true
->setQueryString(['k1' => 'v1'])
->setCustomParams(['k2' => 'v2'])
->appendCustomParams(['k3' => 'v3'])
->setContent(['number' => $i+1]);
$connection->send($request);
}
};
//這是暴露給開發(fā)者的一個回調(diào),參數(shù) $response 是響應(yīng)對象
$connection->onResponse = function($connection, $response){
var_dump(
$response->getHeader(),
$response->getBody(),
$response->getStdout(),
$response->getStderr(),
$response->formatOutput()
);
};
$connection->onMessage = function($connection, $data){
var_dump($data)
//打印接收到的響應(yīng)數(shù)據(jù) $data 如下所示
/*Array
(
[requestId] => 99
[status] => 200
[stderr] =>
[header] => Array
(
[X-Powered-By] => PHP/7.4.16
[Content-type] => text/html; charset=UTF-8
)
[body] => 2022-07-15 13:12:04
array(1) {
["number"]=>
string(2) "99"
}
array(1) {
["k1"]=>
string(2) "v1"
}
string(19) "2022-07-15 21:32:04"
)*/
};
$connection->onClose = function($connection){
};
$connection->connect();
};
Worker::runAll();
問下, 這個FastCGI 客戶端, 可以跨項目使用嗎, 處理完請求后, 會釋放所有資源嗎, 就像傳統(tǒng)的php-fpm一樣
還是不會釋放資源, 同一個項目中可以加速
像我的問題這樣
http://www.wtbis.cn/q/11266
給你一個大大的贊??