目次
回复内容:
Gearman
异步操作

php 计算问题

Jun 06, 2016 pm 08:09 PM
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/

你需要的应该是这个

异步操作

php 计算问题

把计算当做一个任务,放到队列中,有一个脚本在跑,从队列里获取任务,然后在后台处理.
这也就是需要所谓的消息队列,可以看下 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(),后面继续执行。。。。或者就是使用队列了

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles