php 计算问题
<code>$res['code'] = 200; //这里进行计算生成数据,但生成的数据不是用户急需的, //没有想到其它方式可以触发这个计算程序,所以只能设计最后一个用户提交后计算, //由于数据量大,用户等待返回的时间由计算时间决定,可不可以先返回给用户再计算,怎么操作? $this->ajaxReturn($res);//只需返回 code=200 给用户</code>
回复内容:
<code>$res['code'] = 200; //这里进行计算生成数据,但生成的数据不是用户急需的, //没有想到其它方式可以触发这个计算程序,所以只能设计最后一个用户提交后计算, //由于数据量大,用户等待返回的时间由计算时间决定,可不可以先返回给用户再计算,怎么操作? $this->ajaxReturn($res);//只需返回 code=200 给用户</code>
把要做的计算业务先推入mq,就是任务队列,这个可以用redis去做。
Linux跑脚本,一直消费队列。
用redis实现一个队列,每次把相关信息放到队列中,然后返回给用户code,队列里的数据用脚本去跑
Gearman
http://gearman.org/
你需要的应该是这个
异步操作
把计算当做一个任务,放到队列中,有一个脚本在跑,从队列里获取任务,然后在后台处理.
这也就是需要所谓的消息队列,可以看下 rabbitmq,gearman 等消息队列.
我这里写了一篇 php rabbitmq 的使用方法,可以看下.
https://segmentfault.com/a/1190000004924668
上面各位大神提到将计算任务放到消息对队中, 确是一种不错的方案。 但是需要搭建队列服务。
如果计算量不是特别巨大的, 是不是可以fork一个进程来解决更简单呢。
参考一下YII框架的Request对象的onEndRequest方法,该方法是一个可以实现异步调用。
比较同意 @zyxcba 的回答,如果量不大的话是可以先把数据 flush 出去,然后再 fork 一个进程来处理具体的计算任务的,不过 pcntl
扩展只能在 Linux 上面使用。
如果计算的数据不需要返回给用户,可以先行返回继续执行代码的。php-fpm可以使用这个fastcgi_finish_request,echo 返回值,fastcgi_finish_request(),后面继续执行。。。。或者就是使用队列了

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Validator can be created by adding the following two lines in the controller.
