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();
    }

效果:file
显示成功,但是实际上并没有打开端口。

单独创立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的锅,我看说明
file
是不是只能用php +文件名执行?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

我用command 命令起来的控制台卡住了

file

但是用start.php 启动就没问题

file

6年前 评论
讨论数量: 3

我用command 命令起来的控制台卡住了

file

但是用start.php 启动就没问题

file

6年前 评论

@jinwei
Linux下?windows一开始我echo一大堆,结果用command什么输出都没有,以为就是控制台卡住,后来建了个服务端,发现连端口都没有开,却显示成功。确实php 直接执行却可以。感觉就是windows下workerman的锅吧

6年前 评论

@whoami 我是在win7下测试的 command里面的代码和start.php里的代码没区别的

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!