您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman系列之windows環境下多实例多協議共存
发布时间:2022-01-15 22:34:43编辑:雪饮阅读()
首先workerman對windows上面不支持單脚本直接啓動多實例多協議,這不僅僅是workerman,包括如swoole等對windows支持的都不是特別好,比較linux上才是服務器開發主流了,而linux和windows上面區別還是挺大的說。
但workerman也為windows下多實例提供了解決方案,就是說雖然不能單脚本啓動多實例,但是可以一次啓動多個脚本,或者一次啓動一個脚本,然後多會話(windows下暫時沒有實現workerman的會話入後臺的功能)。
接下來就是具體的實施了。
首先配置鏡像站如:
国内镜像站
D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.exe -c D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.ini D:\phpstudy_pro\Extensions\composer1.8.5\composer.phar config -g repo.packagist composer https://packagist.phpcomposer.com
然後下載安裝workerman
D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.exe -c D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.ini D:\phpstudy_pro\Extensions\composer1.8.5\composer.phar require workerman/workerman
如果有證書像是ssl錯誤之類的,可以在下面這個鏈接中下載證書並配置于php.ini(php.ini位置可以通過php --ini的返回結果中查看)中
https://curl.se/ca/cacert.pem
php.ini
[openssl]
openssl.cafile=D:\phpstudy_pro\Extensions\php\php7.1.9nts\extras\ssl\cacert.pem
如果配置完openssl的證書后再次下載安裝你可能還會遇到如下錯誤,該錯誤可能是偶然的,再試一次或許就ok了。
[Composer\Downloader\TransportException]
The "https://packagist.phpcomposer.com/packages.json" file could not be downloaded: failed to open stream: Ŀܾ��ӡ
那麽接下來我們需要準備如3個不同的實例協議如:
tcp.php:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('tcp://0.0.0.0:8283');
// 客户端练上来时,即完成TCP三次握手后的回调
$worker->onMessage = function(TcpConnection $connection) {
$connection->send("hello tcp");
};
Worker::runAll();
ws.php:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8284');
// 客户端练上来时,即完成TCP三次握手后的回调
$worker->onMessage = function(TcpConnection $connection) {
$connection->send("hello ws");
};
Worker::runAll();
http.php:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8285');
// 客户端练上来时,即完成TCP三次握手后的回调
$worker->onMessage = function(TcpConnection $connection) {
$connection->send("hello http");
};
Worker::runAll();
接下來就是啓動這幾個服務了
由于windows下不支持守护进程方式启动,所以提供了可以让windows多实例的前台启动
D:\learning\workerman\workerman>D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.exe -c D:\phpstudy_pro\Extensions\php\php7.1.9nts\php.ini tcp.php ws.php http.php
----------------------- WORKERMAN -----------------------------
Workerman version:4.0.26 PHP version:7.1.9
------------------------ WORKERS -------------------------------
worker listen processes status
none tcp://0.0.0.0:8283 1 [ok]
none websocket://0.0.0.0:8284 1 [ok]
none http://0.0.0.0:8285 1 [ok]
最後測試htto就是直接瀏覽器訪問即可,
http://127.0.0.1:8285
而websocket測試則如:
var ws=new WebSocket("ws://127.0.0.1:8284");
ws.onopen=function(evt){
console.log("connect success");
ws.send("hi!");
};
ws.onmessage=function(evt){
console.log("onMessage",evt);
};
ws.onclose=function(evt){
console.log("onClose",evt);
};
ws.onerror=function(evt){
console.log("onError",evt);
};
對於tcp測試我們如:
telnet 127.0.0.1 8283(注意,windows中telnet可能沒有開啓,需要在卸載軟件哪裏有個入口進去后可以開啓telnet客戶端的)
关键字词:workerman,windows,多实例,多協議
上一篇:workerman系列之再談socket5代理s5優化
下一篇:workerman-websocket协议-websocket协议握手(get,server全局變量(HTTP_ORIGIN))
相关文章
- workerman系列之再談socket5代理s5優化
- workerman服務治理優化系列之連接數管理-根据连接数重
- workerman服務治理系列之workerman服务(脚本)自启动(开机
- workerman16进制与2进制字符串的转换(局限有点狭隘,應該
- http反向代理環境下获取真实ip(基於workerman)
- https在反向代理環境下获取真实ip(基於workerman實現)
- 基於workerman實現ws获取真實客戶端ip(反向代理環境下)
- workerman系列之nginx配置反向代理于workerman時候實
- workerman系列之tp5(thinkphp5)日志结合workerman使用
- workerman常见问题-php的几种回调写法-类的静态方法作