Laravel5.3和Workerman结合使用异步的示例

  介绍

小编给大家分享一下Laravel5.3和Workerman结合使用异步的示例,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

网上查阅资料有现成和Workerman结合的作曲家组件,但个人感觉不太靠谱,github上明星太少,而且怕有问题也不好调,就想自己先试试。

我的办法因为修改要一点Workerman源码,且是直接引入Workerman的代码文件,感觉有点低,但才智有限,暂时没想到更好的方法。

准备:

1。需先了解Laravel框架下命令行的使用,参考中文版教程

2。需了解Workerman的基本知识

场景:用户注册后,异步方式给用户发送邮件提醒

1。把Workerman框架放到应用目录下

2。创建命令代码:

php  artisan : command  SendEmail namespace 应用\ \控制台命令;      use 照亮\ \控制台命令;   use 阐明\ \外墙\日志的支持;   use 阐明\ \外墙\邮件的支持;   use 照亮\邮件\消息;   use  Workerman \工人;      require  app_path (& # 39; Workerman/Workerman_Linux Autoloader.php& # 39;);      class  SendEmail  extends 命令   {   ,,,/* *   ,,,,*,从而name 以及signature  of 从而console 命令。   ,,,,   ,,,,*,@var 字符串   ,,,*/,,,protected  signature 美元;=,& # 39;发送:email {行动}& # 39;;      ,,,/* *   ,,,,*,从而console  command 描述。   ,,,,   ,,,,*,@var 字符串   ,,,*/,,,protected  description 美元;=,& # 39;Command 描述# 39;;      ,,,/* *   ,,,,*,Create  a  new  command 实例。   ,,,,   ,,,,*,@return 空白   ,,,*/,,,public  function  __construct ()   ,,,{   ,,,,,,,父母:__construct ();   ,,,}      ,,,/* *   ,,,,*,Execute 从而console 命令。   ,,,,   ,,,*/,,,public  function 处理()   ,,,{   ,,,,,,,mailWorker 美元;=,new 工人(& # 39;文本://0.0.0.0:12345& # 39;);   ,,,,,,,美元mailWorker→count =, 4;   ,,,,,,,美元mailWorker→name =, & # 39; MailWorker& # 39;;   ,,,,,,,美元mailWorker→onMessage =, function (美元)连接,,emailData美元),{   ,,,,,,,,,,,emailData 美元;=,json_decode ($ emailData);   ,,,,,,,,,,,name 美元;=,美元emailData→名称;   ,,,,,,,,,,,email 美元;=,emailData→美元;   ,,,,,,,,,,,邮件::生(& # 39;注册成功& # 39;,,function  (Message 消息)美元,use (电子邮件),{   ,,,,,,,,,,,,,,,信息→美元,(邮件美元)→主题(反式(& # 39;mail.welcome_register& # 39;));   ,,,,,,,,,,,});      ,,,,,,,,,,,//,写入日志   ,,,,,,,,,,,日志:useFiles (storage_path(),只& # 39;/日志/event.log& # 39;,, & # 39;信息# 39;);   ,,,,,,,,,,,日志:信息(“{$名称}({$邮件})注册成功“);   ,,,,,,,};      ,,,,,,,工作人员::runAll ();   ,,,}   }

以上是workerman服务端,用命令行启动:

php  artisan 发送:email 开始

此时命令行下会报错:workerman艺人不会运行,原因是workerman会把第一个参数工匠当前启动文件,而实际上,发送:邮件才是我们想要的启动文件

解决:修改workerman的解析参数代码

workerman \ Workerman_Linux \工人。php,修改parseCommand方法(只要把$ argv的键都加1就行):

/* *   ,,,,*,Parse 命令。   ,,,,*,php  yourfile.php  start  |, stop  |, restart  |, reload  |,地位   ,,,,   ,,,,*,@return 空白   ,,,*/,,,protected  static  function  parseCommand ()   ,,,{   ,,,,,,,global  $ argv;      ,,,,,,,如果($ argv[0],==, & # 39;工匠# 39;),//,laravel框架下处理   ,,,,,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Laravel5.3和Workerman结合使用异步的示例