laravel 使用Workerman , 已經(jīng)開了一個(gè)服務(wù)以后(php artisan workerman:command start d),再開另一個(gè)(php artisan workermanweb:command start d)提示已經(jīng)運(yùn)行, Workerman start in DEBUG mode Workerman already running 端口號(hào)確定不同 ,怎么處理才好 ?
1、報(bào)告 already running 的原因是因?yàn)閣orkerman要求不能重復(fù)啟動(dòng)已經(jīng)在運(yùn)行的同一個(gè)啟動(dòng)腳本,這是為了準(zhǔn)確的stop 、restart等所需。在laravel中??artisan??腳本就相當(dāng)于我們常見的 start.php 啟動(dòng)腳本,根據(jù)這個(gè)原理我們有如下參考做法:cp /path/to/artisan /path/to/artisan2
php artisan xxxx xxxx
php artisan2 xxxx xxxx
2.? 參考方案二:php artisan make:command MyCommandclass
MyCommand extend Command
{
public function start()
{
$this->worker1 = new Worker("tcp://0.0.0.0:8888");
$this->worker2 = new Worker("http://0.0.0.0:9999");
//.........
// 啟動(dòng)多少個(gè)進(jìn)程對(duì)外提供服務(wù)
$this->worker1->count = 3;
$this->worker1->count = 4;
// 運(yùn)行worker
Worker::runAll();
}
}
?
嗯,兩種方式都試過了,第一種 啟動(dòng)的時(shí)候 提示啟動(dòng)命令不存在,第2個(gè)啟動(dòng)的時(shí)候 提示不能在一個(gè)文件啟動(dòng)2個(gè) worker, 試了下另外的方式
Worker::runAll(); 在這個(gè)方法中傳遞參數(shù)進(jìn)去 然后根據(jù)傳遞的參數(shù)生成.pid文件。