'timeout' => 30, // 請(qǐng)求發(fā)出后等待響應(yīng)的超時(shí)時(shí)間
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function(){
$options = [
'max_conn_per_addr' => 128, // 每個(gè)域名最多維持多少并發(fā)連接
'keepalive_timeout' => 15, // 連接多長(zhǎng)時(shí)間不通訊就關(guān)閉
'connect_timeout' => 30, // 連接超時(shí)時(shí)間
'timeout' => 30, // 請(qǐng)求發(fā)出后等待響應(yīng)的超時(shí)時(shí)間
];
$http = new Workerman\Http\Client($options);
$http->get('http://example.com/', function($response){
var_dump($response->getStatusCode());
echo $response->getBody();
}, function($exception){
echo $exception;
});
};
Worker::runAll();
不設(shè)置的話(huà) 默認(rèn)是 30s
謝謝啊,是這樣的大哥,國(guó)外的第三方數(shù)據(jù)源,正常來(lái)說(shuō)第三方數(shù)據(jù)源會(huì)提供websocket連接,然后服務(wù)端和第三方建立長(zhǎng)連接,但是這個(gè)第三方?jīng)]有websocket,只有stream流連接,會(huì)實(shí)時(shí)的推送報(bào)價(jià)數(shù)據(jù),我想拿到這個(gè)實(shí)時(shí)的報(bào)價(jià)數(shù)據(jù),然后處理一下,再轉(zhuǎn)發(fā)給前端對(duì)應(yīng)的連接對(duì)象,這個(gè)是上次提問(wèn)的問(wèn)題。http://www.wtbis.cn/q/12568
我把代碼及截圖貼出來(lái)了,如果不能設(shè)置不超時(shí),那我估計(jì)只能設(shè)置一個(gè)很大的數(shù)值了,如:18600秒。之前的方案是使用GuzzleHttp stream流請(qǐng)求不停的存到redis,然后再time定時(shí)不停的從redis中取,這樣會(huì)有延遲,后來(lái)改成的這個(gè)方案。
<?php
use Workerman\Connection\TcpConnection;
use Workerman\Http\Client;
use Workerman\Protocols\Http\Chunk;
use Workerman\Protocols\Http\Request;
use Workerman\Protocols\Http\Response;
use Workerman\Worker;
require 'vendor/autoload.php';
$worker = new Worker("websocket://127.0.0.1:2001");
$worker->count = 1;
$worker->onWorkerStart = function (Worker $worker) {
$headers = [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer 5dc864e9879fe3f7a6d33621fda8283f-f524c......',
'Accept-Datetime-Format' => 'UNIX'
];
// 外匯和金屬在一起,共89個(gè)
$instruments = ['EUR_USD', 'USD_JPY', 'GBP_USD', 'AUD_USD', 'USD_CAD', 'USD_CHF', 'NZD_USD', 'EUR_GBP', 'EUR_AUD', 'EUR_CAD', 'EUR_CHF', 'EUR_JPY', 'EUR_NZD', 'GBP_JPY', 'GBP_AUD', 'GBP_CAD', 'GBP_CHF', 'GBP_HKD', 'GBP_NZD', 'GBP_SGD', 'GBP_ZAR', 'GBP_PLN', 'EUR_HUF', 'USD_HKD', 'USD_TRY', 'USD_SEK', 'USD_CNH', 'USD_SGD', 'USD_NOK', 'USD_HUF', 'USD_DKK', 'USD_CZK', 'USD_ZAR', 'USD_PLN', 'USD_THB', 'EUR_ZAR', 'EUR_HKD', 'EUR_DKK', 'EUR_CZK', 'EUR_SEK', 'EUR_PLN', 'EUR_NOK', 'EUR_TRY', 'EUR_SGD', 'USD_MXN', 'SGD_JPY', 'NZD_CHF', 'CHF_JPY', 'CAD_JPY', 'NZD_JPY', 'CAD_HKD', 'AUD_CAD', 'TRY_JPY', 'ZAR_JPY', 'AUD_HKD', 'SGD_CHF', 'AUD_SGD', 'CHF_ZAR', 'NZD_HKD', 'NZD_SGD', 'HKD_JPY', 'NZD_CAD', 'AUD_NZD', 'CAD_SGD', 'AUD_CHF', 'AUD_JPY', 'CAD_CHF', 'CHF_HKD', 'XAU_USD', 'XAU_EUR', 'XAU_GBP', 'XAU_JPY', 'XAU_CAD', 'XAU_AUD', 'XAU_CHF', 'XAU_NZD', 'XAU_HKD', 'XAU_SGD', 'XAU_XAG', 'XAG_USD', 'XAG_EUR', 'XAG_GBP', 'XAG_JPY', 'XAG_CAD', 'XAG_AUD', 'XAG_CHF', 'XAG_NZD', 'XAG_HKD', 'XAG_SGD'];
$http = new Client();
$http->request('這里是一個(gè)國(guó)外的流連接地址,這里是一個(gè)國(guó)外的流連接地址,這里是一個(gè)國(guó)外的流連接地址/pricing/stream', [
'method' => 'GET',
'data' => [
'instruments' => implode(',', $instruments)
],
'headers' => $headers,
'progress' => function ($buffer) {
$res = json_decode($buffer, true);
if ($res && $res['type'] == 'HEARTBEAT') {
var_dump($res);
}
},
'success' => function ($response) {
var_dump(new Chunk(''));
},
'error' => function ($exception) {
echo $exception;
}
]);
};
// 運(yùn)行worker
Worker::runAll();