Laravel 中如何在 win 下整合 workerman?
采用的windows环境下workerman的引入,引入的包为workerman-for-win
使用方法:参考https://www.jianshu.com/p/00623acb3dad
通过创建command调用artisan执行handle函数,handle函数中处理worker。终端显示可以workerman运行成功
测试代码(创建text服务端,端口5678):
public function handle()
{
global $argv;
$arg = $this->argument('action');
$argv[1] = $argv[2];
$argv[2] = isset($argv[3]) ? "-{$argv[3]}" : '';
switch ($arg) {
case 'start':
$this->start(); //这里调用
break;
case 'stop':
break;
case 'restart':
break;
case 'reload':
break;
case 'status':
break;
case 'connections':
break;
}
}
public function start()
{
$text_worker = new Worker("text://127.0.0.1:5678");
$text_worker->onMessage = function($connection, $data)
{
var_dump($data);
$connection->send("hello world");
};
Worker::runAll();
}
效果:
显示成功,但是实际上并没有打开端口。
单独创立php文件。通过命令行php 文件名执行。
测试代码:
<?php
namespace App\Handlers;
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '\..\..\vendor\workerman\workerman-for-win\Autoloader.php';
$text_worker = new Worker("text://127.0.0.1:5678");
$text_worker->onMessage = function($connection, $data)
{
var_dump($data);
$connection->send("hello world");
};
Worker::runAll();
结果正常运行
请问
1.大部分使用workerman都是应用在linux上,这种结合方式有人成功运行了吗?
2.windows下有没有人如上结合command成功运行了吗?
3.会不会是workerman-win的锅,我看说明
是不是只能用php +文件名执行?
推荐文章: