這是Laravel架構調用Workerman
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
use Workerman\Worker;
use PHPSocketIO\SocketIO;
use Config;
class Workerman extends Command
{
use ConfirmableTrait;
protected $signature = 'workerman:server {action} {-d|daemon=default}';
protected $description = 'Run Workerman Server.';
public function __construct()
{
parent::__construct();
}
public function handle()
{
global $argv, $argc;
$action = $this->argument('action');
if (is_null($this->option('daemon'))) {
$argv = ;
$argc = 3;
} else {
$argv = ;
$argc = 2;
}
switch ($action) {
case 'start':
$port = Config::get('workerman.server.port');
$events = Config::get('workerman.events');
$server = new SocketIO($port);
foreach ($events as $event) {
new $event($server);
}
Worker::runAll();
break;
case 'stop':
Worker::stopAll();
break;
case 'status':
$this->info(Worker::getStatus());
break;
default:
$this->error($action . ' action does not exist, try one one thoses : start, stop, status');
break;
}
}
}
我用 php artisan workerman:server start -d 可以正常啟動,但是用 php artisan workerman:server stop 卻無法停掉workerman程序。