本人直接使用的windows,phpstudy_pro本地環(huán)境
安裝了php5.6版本和php7.3版本
兩個版本都開啟了socket擴展
當環(huán)境變量是php7.3時,運行測試代碼
開啟服務(wù)成功,js正常連接websocket
但是當環(huán)境變量切換到PHP5.6時
同樣的測試代碼,開啟服務(wù)也成功:
但是js客戶端會一直卡在連接狀態(tài)
再過一會兒后就提示連接超時
使用原生websocket時,php5.6也是可以正常使用的,只是使用workerman時,不能正常使用
因公司項目環(huán)境,必須使用5.6環(huán)境,所以必須解決這個問題,求各位大佬賜教,這個到底是什么問題
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
// 注意:這里與上個例子不同,使用的是websocket協(xié)議
$ws_worker = new Worker("websocket://0.0.0.0:2000");
// 啟動4個進程對外提供服務(wù)
$ws_worker->count = 4;
// 當收到客戶端發(fā)來的數(shù)據(jù)后返回hello $data給客戶端
$ws_worker->onMessage = function($connection, $data)
{
// 向客戶端發(fā)送hello $data
$connection->send('hello ' . $data);
};
// 運行worker
Worker::runAll();
測試下上面代碼,排除下業(yè)務(wù)邏輯問題。
原本是PHP5.6.9版本,我切換到PHP5.6.27的版本,功能恢復(fù)正常,所以問題暫時解決,但是歡迎各位大佬繼續(xù)討論此問題,這個異常可能是個BUG,不知道有沒有解決的辦法