php请求结束执行的方法,在PHP中完成HTTP请求后执行代码?

PHP提供了一种注册关闭函数的机制:

register_shutdown_function('shutdown_func');

问题是在最近的PHP版本中,此功能仍在请求期间执行.

我有一个平台(在Zend Framework中,如果这很重要),整个请求中的任何代码都可以注册一个条目以登录到数据库.而不是在整个请求中有大量单独的插入语句,减慢页面速度,我将它们排队以在请求结束时插入.我希望能够在用户完成HTTP请求后执行此操作,因此记录或执行任何其他清理任务的时间长度不会影响用户对页面的感知加载时间.

PHP中是否有内置方法来执行此操作?或者我是否需要使用外部进程配置某种共享内存空间方案并发出进程以进行日志记录的信号?

解决方法:

如果您真的关心MySQL的插入时间,那么您可能正在解决症状,而不是原因.

例如,如果您的PHP / Apache进程在用户获取HTML后执行,那么您的PHP / Apache进程仍然会锁定在该请求中.由于它很繁忙,如果另一个请求出现,Apache必须分叉另一个线程,为它分配更多内存,打开其他数据库连接等.

如果遇到性能问题,则需要从PHP / Apache执行中删除繁重的工作.如果你正在进行大量的清理任务,那么你就会烧掉宝贵的Apache进程.

我会考虑将您的条目记录到一个文件中,并让crontab将这些条目加载到您的数据库中.如果您有其他重型任务,请使用排队/作业处理系统进行带外工作.

标签:php,zend-framework

来源: https://codeday.me/bug/20190622/1260886.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值