Laravel 5.1:在后台运行自定义工匠命令

时间:2016-01-02 18:20:16

标签: laravel websocket laravel-5.1 artisan ratchet

我正在使用Ratchet package处理聊天应用程序。在教程的帮助下,我编写了一个自定义artisan命令来启动Websocket服务器。我需要在后台运行这个Artisan命令,它应该一直运行。我该怎么做?

我尝试使用Artisan Facade的Artisan::queue and Artisan::call。但是由于我的自定义命令无限期地运行(很长一段时间),它无效。

修改

我的托管服务提供商不允许我通过ssh运行Artisan命令。

以下是Custom Artisan Command的代码:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use Ratchet\Http\HttpServer;
use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use App\Classes\Socket\ChatSocket;
use App\Classes\Socket\Base\BaseSocket;

class ChatServer extends Command
{
/**
 * The name and signature of the console command.
 *
 * @var string
 */
protected $signature = 'chat_server:serve';

/**
 * The console command description.
 *
 * @var string
 */
protected $description = 'Command description';

/**
 * Create a new command instance.
 *
 * @return void
 */
public function __construct()
{
    parent::__construct();
}

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()
{
    $this->info("Start server");

    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new ChatSocket()
            )
        ),
        8080
    );

    $server->run();
}
}

1 个答案:

答案 0 :(得分:0)

您只需使用命令在控制台中运行它:

php artisan chat_server:serve

可能你应该确保它会一直有效。其中一种方法是使用Supervisor来确保此命令始终(几乎)一直运行