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



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

我尝试使用Artisan Facade中的Artisan::队列和Artisan::调用。但由于我的自定义命令无限期运行(很长一段时间),它不起作用。

编辑:

我的主机提供商不允许我通过ssh运行Artisan命令。

以下是自定义Artisan命令的代码:

<?php
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
use RatchetHttpHttpServer;
use RatchetServerIoServer;
use RatchetWebSocketWsServer;
use AppClassesSocketChatSocket;
use AppClassesSocketBaseBaseSocket;
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();
}
}

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

php artisan chat_server:serve

也许你应该确保它一直有效。其中一种方法是使用Supervisor来确保该命令将(几乎)一直运行

相关内容

  • 没有找到相关文章

最新更新