workerman windows環境下無法啟動問題


問題描述

使用laravel框架composer加載workerman/gateway-worker擴展使用workerman做客服系統.通過laravel的command命令: php artisan app:chat start啟動.linux服務器上正常,在window服務器上啟動失敗,無報錯(如下圖)

workerman啟動失敗

問題原因

\workerman\Worker.php: 1424

    /**
     * Get start files for windows.
     *
     * @return array
     */
    public static function getStartFilesForWindows() {
        global $argv;
        $files = array();
        foreach($argv as $file)
        {
            if(\is_file($file))
            {
                $files[$file] = $file;
            }
        }
        return $files;
    }

代碼如上,函數返回的$files數組中的文件是用來fork worker進程的.當$argv數組中無文件名導致返回的$files為空時就會出現上述問題.

解決方案

注釋掉代碼中對$argv[0]的賦值,或是直接添加/替換命令執行文件(laravel為artisan; thinkphp為think)到全局數組$argv中,eg:

global $argv;
//$argv[0] = 'app:chat'; //注釋此行(當$argv[0]初始值就為artisan時)

或

$argv[0] = 'artisan'; //重新賦值可執行命令文件

重新啟動,出現[OK],表示成功.


原文地址: https://www.zhuyilong.我愛你/tech/workerman_windows_start.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM