🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **使用该功能时,请开启队列!!!(请确保队列开启!!!!!!)** 1. 队列优势 任务执行流畅,无需等待。如团长批量发送提货通知(比如500条,正常操作发送完需要等待2分钟)。如开启了队列后,团长点击一下发送,后台队列服务就开始一条条发送,无需团长在操作页面等待发送完成。 可减轻秒杀环节高并发对服务器的压力。 可执行一些定时的任务。 2. 队列功能 ①团员收货消息群发 ②自动关闭订单 ③自动收货 ④自动上下架 ⑤秒杀分流 ⑥拼团自动退款和关闭订单 等后续增加的新功能。 3. 基础条件 1. swoole扩展正常安装 社区团购plus系统打开正常,并且未提示swoole\_loader未安装 2. 宝塔环境需要删除几个禁用函数、非宝塔的可以在php.ini中删除“disable\_functions”中对应的函数 ![](https://img.kancloud.cn/21/34/2134ba3cf383689867d04d6e9766de3e_639x512.png) ![](https://img.kancloud.cn/81/5e/815eec2d625425e8429437e5f44e4015_499x271.png) 如果您为宝塔环境,请在“软件管理”-->“PHP -7.2”设置页—禁用函数中,删除如下图的5个函数,否则无法开启队列。 切记,每次在宝塔更新PHP的时候、或者更新宝塔版本的时候,会自动增加禁用函数,需要再次排查删除,否则队列将无法正常运行! 4. 队列开启及开机自动运行方法 命令解析(根据下图,分割成4句话) ![](https://img.kancloud.cn/26/c4/26c4afbcca3f750466b948714988328f_815x51.png) nohup /www/server/php/72/bin/php /www/wwwroot/xxxxx/yii queue/listen \>> /www/wwwroot/xxxxx/log/sqtg-log.log 2>&1 & 如果您是宝塔,请按照上面的代码执行 如果非宝塔,请把蓝色内容,改成你服务器实际php7.2文件所在的路径 nohup 和 本行最后一个 & 是指后台运行, \>/www/xxxx.log 2>&1 是指把错误输出到某个log文件中 php 是指在linux启动php。提示,在“amh”环境下,直接运行php 可能提示报错,参考最下面“php明了无法执行或版本不一致怎么办”,查看操作步骤 /www/wwwroot/xxxxx/yii 是系统根目录中的yii文件 xxxxx 需要改成你的站点根目录 本系统版本的yii文件路径为 /www/wwwroot/xxxxx/addons/worldidc\_sqtg/power/yii queue/listen 是我们的队列监听命令 ![](https://img.kancloud.cn/02/4a/024aed5e9bdb5b7ac5d19921e623696c_669x77.png) nohup php /www/wwwroot/xxxxx/yii queue/listen \>> /www/wwwroot/xxxxx/log/sqtg-log.log 2>&1 & 所以根据上面的代码,执行代码转化为汉语为“在后台 用php 执行某个目录下的yii文件 然后启用队列监听服务 输出错误到某个log文件 ” 这就是我们队列开启的核心语句。 如图,执行完之后,会提示一条数字 ![](https://img.kancloud.cn/f4/cb/f4cb1570935e72843bd69b1f431bd371_1105x40.png) 我们需要确认,队列是否在后台正常运行,输入进程查询命令 ps -aux|grep yii ![](https://img.kancloud.cn/1e/a6/1ea65908441dc6a5329ea849637dc65b_247x53.png) ![](https://img.kancloud.cn/2c/21/2c212208f93d637d6f05bcb58fc6240b_874x42.png) 如果查询结果如上图,则队列没有正在在后台运行,请最下方“队列开启命令执行后无后台进程”查看调试方法。 ![](https://img.kancloud.cn/4e/5b/4e5b2cbcb96b581c592241f41f9546a3_1102x85.png) ↑↑↑ 如果查询结果如上图,可看到此次查询到了 yii文件在后台运行的 queue/listen 命令,证明您的队列已经正常开启! 仅此还不行,我们需要把队列设置为开机自动启动。 先执行此命令,开启自动启动功能 chmod +x /etc/rc.d/rc.local ![](https://img.kancloud.cn/10/5b/105bb902abfd9eea954a994722d2ff68_652x28.png) 然后编辑启动脚本 vi /etc/rc.local ,把队列开启命令放入启动脚本 ![](https://img.kancloud.cn/a6/e6/a6e6b43df32507126388c24282237ae1_831x587.png) ![](https://img.kancloud.cn/d6/5f/d65fd9fcf4dee1927fd688ddf4b81527_779x314.png) 然后重启服务器,使用 ps -aux|grep yii 查询队列是否开启,如正常开启,则证明开启启动已生效。 5. 常见问题及解决方法 1. php命令无法执行或版本不一致怎么办? 在某些集成环境下,php命令没有设置,无法自动运行,如下图。 ![](https://img.kancloud.cn/24/0a/240ad8ca168826927a28a21d5b81c717_311x68.png) 此图 执行 php -v 下面提示 command not found 证明php命令无法执行,我们可以查找php的真实路径,直接运行真实路径的php 通过 find - name php 查询出php执行文件所在的路径(bin文件夹中的php) ![](https://img.kancloud.cn/a7/9c/a79ca82735094a83ef876af2e91d48b0_430x157.png) 下面执行队列的时候,可以用全路径的php来执行,如下图,原来的php用 真正的路径代替 ![](https://img.kancloud.cn/bd/3d/bd3d352f26b2844da185f2bd42323ad5_1053x28.png) 如果您的社区团购系统安装的是php5.6版本,但是输入 php -v,提示的默认执行是7.2的版本,或者安装的7.2版本,php -v提示5.6版本 这种情况我们就需要参考上面的方法,查到php7.2或者5.6的真实路径,通过绝对路径地址代替php命令。 2. 队列开启命令执行后,无后台进程怎么办? ![](https://img.kancloud.cn/f4/cb/f4cb1570935e72843bd69b1f431bd371_1105x40.png) 很多人执行完上面的命令后,出来一个数字,但是查询进程没有发现队列进程 这就证明队列没有正常开启。 造成这个情况的原因有几个,首先是参考基础条件中宝塔环境需要删除几个禁用函数 ,进行操作。 如果还是不能正常开启,可以输入下面的命令 php /www/wwwroot/xxxxxx/yii ,直接运行yii文件,看看有什么报错。 ![](https://img.kancloud.cn/88/80/8880a9d5a80e3f576b3f438e82f02fab_957x234.png) 如上图,提示exec()函数被禁用的原因,如果您无法确认具体是什么原因,请截图发我们排查。 解除后,如果执行该命令,能返回下图的 黄色和绿色文字,则证明队列环境已经正常,可继续开启队列。 ![](https://img.kancloud.cn/0d/2f/0d2fd865a7b7c0399a0bd4fb5ccf7673_871x503.png) 三、amh环境,php -cli 模式,提示没有加载swoole\_loader怎么办? 把php.ini配置文件,复制到etc目录中一份 ![](https://img.kancloud.cn/84/3b/843b56498c78f8b8f7e98bf17b4b25de_1031x27.png) ![](https://img.kancloud.cn/6f/66/6f662564152e735d50b1800995488dec_673x92.png)