webman在return之前客户端关闭了浏览器,服务端没有执行完的代码会继续执行吗?

alafafa

问题描述

@walkor
用户咋浏览器端点击同步企业微信客户资料,命令发给了服务端的一个controller后,客户端的按钮就变成了一个转圈圈显示同步中的按钮,服务端controller收到命令后逐一去企业微信接口拉取客户资料,每获取到一个客户资料后写入数据库,然后再去获取下一个,全部获取完之后给客户端 return 一个同步完成的 response ,客户端收到 response 后,转圈圈按钮停止转动显示同步完成。假设有 5000个客户资料需要同步,假设这个过程需要半个小时,而在这半个小时中客户端关闭了浏览器,服务端会怎样,是会继续同步资料写入数据库,还是会停掉未完成的同步,假如是停掉未完成的工作的话如何阻击这种现象发生?即无论是客户端是在浏览器窗口中等待还是关闭了浏览器窗口服务端都会完成同步工作

666 3 1
3个回答

nitron

用队列/自定义进程处理

  • alafafa 2022-10-21

    假如不用 队列/自定义进程处理,用户就想在浏览器里等着跑完,能实现吗?网页被关掉或许是因为不小心或者停电

  • alafafa 2022-10-21

    webman是常驻内存的,按道理应该能实现,php-fpm都能通过改php.ini实现,可是这块儿webman的文档并没有说明,有没有一个在config里面的开关,像修改php.ini的max_execution_time,或者用set_time_limit(0)加在controller能行吗,坐等 @walkor 来给说明一下

ichynul

分页处理,没有处理完自动跳下一页

  • 暂无评论
walkor

关闭浏览器webman会继续执行,关闭浏览器不影响正在执行的业务

  • alafafa 2022-10-21

    好的,老大,谢谢了,不需要在 controller里加 set_time_limit(0)吗?默认就是长链接?

  • walkor 2022-10-21

    什么都不需要设置

年代过于久远,无法发表回答
🔝