ホームページ バックエンド開発 PHPチュートリアル 队列在编程中的实际应用(php)_php技巧

队列在编程中的实际应用(php)_php技巧

May 17, 2016 am 09:23 AM

一:队列的概念、数据结构

队列(Queue)是运算受到限制的一种线性表。只允许在表的一端进行插入,而在另一端进行删除元素的线性表。队尾(rear)是允许插入的一端。队头(front)是允许删除的一端。空队列是不含元素的空表。

假设有个队列Q=(a1,a2,…,an),则a1为队头元素,an为队尾元素。元素入队的次序为a1,a2,…,an,而出队的次序为a1,a2,…,an。可见队列的操作是按照先进先出的原则进行的。

其他详细的介绍请在网上搜索很多资料。

二:PHP的队列

在PHP中队列以数组的形式表现。数组中的第一个元素作为队头,最后一个元素作为队尾,这样就可以操作这个队列了。

结果就是

网上有很多封装好的类,可以直接使用。

array_push:将一个或多个单元压入数组的末尾(入栈)

array_unshift:在数组开头插入一个或多个单元

array_pop:将数组最后一个单元弹出(出栈)

array_shift:将数组开头的单元移出数组

三:Ruby Starling

Starling是一个支持MemCache协议的轻量级持久化服务器。Starling是让创建网络访问队列或者多个队列异常简单,也就是说多点和多台机器间的异步工作进程。它是著名微博客网站Twitter开发用来处理大量的队列消息,以及保持服务的响应。Starling已经在生产环境中使用,不仅是Twitter在使用,FiveRuns同样在使用。FiveRuns甚至还根据自己的应用做了改进。

Starling和Memcache使用的是一个协议只是端口不一样。Starling使用的是22122端口,Memcache使用的是11211端口。

Ruby
tar xzvf ruby-1.9.1-p0.tar.gz
cd ruby-1.9.1-p0
./configure --prefix=/usr/local/huiyangruby
make
make install
 
Gem
tar -zxvf rubygems-1.3.6.tgz
cd rubygems-1.3.6
ruby setup.rb
 
Starling
gem install memcache-client starling
starling
starling & //后台执行
starling_top //查看PS信息

接下来你就可以使用队列做自己的事情啦。Starling和Memcache用法一样,两者配合处理更佳。

使用Memcache::addServer可以建立一个memcache连接池。他不同于connect与pconnect他是在有请求是才连接,无则端口连接。

Memcache::connect -- 打开一个到Memcache的连接。

Memcache::pconnect -- 打开一个到Memcache的长连接。

Memcache::close -- 关闭一个Memcache的连接。

Memcache::set -- 保存数据到Memcache服务器上。

Memcache::get -- 提取一个保存在Memcache服务器上的数据。

Memcache::replace -- 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)。

Memcache::delete -- 从Memcache服务器上删除一个保存的项目。

Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)。

Memcache::getStats -- 获取当前Memcache服务器运行的状态。

四:张宴作品HTTPSQS

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

有兴趣的可以看看网址:http://blog.s135.com/httpsqs_1_2/

五:队列的应用

队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。(文/侯惠阳 PHPer.yang)

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Python での Deque: 効率的なキューとスタックの実装 Python での Deque: 効率的なキューとスタックの実装 Apr 12, 2023 pm 09:46 PM

Python の deque は、コンピューティングにおいて最も一般的なリストベースのデータ型である、エレガントで効率的な Python のキューとスタックの実装に役立つ、低レベルの高度に最適化された deque です。この記事では、Yun Duo 氏が次のことを一緒に学びます: deque を使用して効果的に要素をポップアップおよび追加する deque 内の任意の要素にアクセスする deque を使用して効率的なキューを構築する deque を使用して要素を右側に追加するPython リストの最後とポップアップ要素の操作は、一般に非常に効率的です。時間計算量を Big O で表現すると、O(1) であると言えます。そして、新しい要素を受け入れるために基になるリストを増やすために Python がメモリを再割り当てする必要がある場合、これらは

Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか? Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか? Jun 12, 2023 am 08:51 AM

Web アプリケーションは開発を続けるため、アプリケーションの安定性と可用性を維持するために多数のタスクを処理する必要があります。キュー システムの使用は 1 つの解決策です。 ThinkPHP6 は、タスクを管理するための組み込みのキュー システムを提供します。ただし、多数のタスクを処理するには、より適切なキュー管理が必要です。これはスーパーバイザーを使用して実現できます。この記事では、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。その前に、いくつかの基本概念を理解する必要があります。 キュー システム キュー システムとは

Java Queueキューのパフォーマンスの分析と最適化戦略 Java Queueキューのパフォーマンスの分析と最適化戦略 Jan 09, 2024 pm 05:02 PM

JavaQueue のパフォーマンス分析と最適化戦略 キューの概要: キュー (キュー) は Java で一般的に使用されるデータ構造の 1 つであり、さまざまなシナリオで広く使用されています。この記事では、JavaQueue キューのパフォーマンスの問題について、パフォーマンス分析と最適化戦略の 2 つの側面から説明し、具体的なコード例を示します。はじめに キューは、プロデューサー/コンシューマー モード、スレッド プール タスク キュー、およびその他のシナリオの実装に使用できる先入れ先出し (FIFO) データ構造です。 Java は、Arr などのさまざまなキュー実装を提供します。

PHP および MySQL でのメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用 PHP および MySQL でのメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用 Oct 15, 2023 pm 02:26 PM

PHP および MySQL におけるメッセージ遅延とメッセージ再試行におけるキュー テクノロジーの応用概要: Web アプリケーションの継続的な開発に伴い、高い同時処理とシステムの信頼性に対する要求がますます高まっています。解決策として、キュー テクノロジーはメッセージ遅延機能とメッセージ再試行機能を実装するために PHP と MySQL で広く使用されています。この記事では、キューの基本原理、キューを使用してメッセージ遅延を実装する方法、キューを使用してメッセージの再試行を実装する方法など、PHP および MySQL におけるキュー テクノロジのアプリケーションを紹介します。

Javaでは、キューのadd()メソッドとoffer()メソッドの違いは何ですか? Javaでは、キューのadd()メソッドとoffer()メソッドの違いは何ですか? Aug 27, 2023 pm 02:25 PM

Java のキューは、複数の機能を備えた線形データ構造です。キューには 2 つのエンドポイントがあり、要素の挿入と削除には先入れ先出し (FIFO) 原則に従います。このチュートリアルでは、Java のキューの 2 つの重要な関数、add() と Offer() について学習します。キューとは何ですか? Java のキューは、ユーティリティ パッケージとコレクション パッケージを拡張するインターフェイスです。要素はバックエンドに挿入され、フロントエンドから削除されます。 Java のキューは、リンク リスト、DeQueue、優先キューなどのクラスを使用して実装できます。優先キューは通常のキューの拡張形式であり、各要素には優先順位があります。キューの add() メソッドは、キューに要素を挿入するために使用されます。要素を(次のように)定義します。

PHPとMySQLでのキュータスク監視とタスクスケジューリングの実装計画 PHPとMySQLでのキュータスク監視とタスクスケジューリングの実装計画 Oct 15, 2023 am 09:15 AM

PHP および MySQL でのキュー タスクの監視とタスク スケジューリングの実装 はじめに 最新の Web アプリケーション開発において、タスク キューは非常に重要なテクノロジです。キューを使用すると、バックグラウンドで実行する必要があるいくつかのタスクをキューに入れ、タスクのスケジュール設定を通じてタスクの実行時間と順序を制御できます。この記事では、PHP と MySQL でタスクの監視とスケジュールを実装する方法を紹介し、具体的なコード例を示します。 1. キューの動作原理 キューは先入れ先出し (FIFO) データ構造であり、

PHPフラッシュセールシステムにおけるキューと非同期処理の最適化手法 PHPフラッシュセールシステムにおけるキューと非同期処理の最適化手法 Sep 19, 2023 pm 01:45 PM

PHP フラッシュセールシステムにおけるキューと非同期処理の最適化手法 インターネットの急速な発展に伴い、フラッシュセールやラッシュセールなど、電子商取引プラットフォーム上のさまざまな優待活動もユーザーの注目を集めるようになりました。ただし、この同時ユーザー要求の多さは、従来の PHP アプリケーションにとって大きな課題です。システムのパフォーマンスと安定性を向上させ、同時リクエストによるプレッシャーを解決するには、開発者はフラッシュ セール システムを最適化する必要があります。この記事では、PHPフラッシュセールシステムにおけるキューと非同期処理による最適化手法に焦点を当て、具体的なコード例を示します。

PHP と MySQL でキュー メッセージの確認と消費の失敗処理を実装する方法 PHP と MySQL でキュー メッセージの確認と消費の失敗処理を実装する方法 Oct 15, 2023 pm 01:46 PM

PHP および MySQL でのキュー メッセージの確認と消費障害処理の実装方法 キューは一般的なメッセージ受け渡しメカニズムであり、システム内の同時実行性が高い問題を解決し、非同期処理と分離を実現するのに役立ちます。キューの設計において、メッセージの確認と消費障害の処理は非常に重要なリンクです。この記事では、PHP と MySQL を使用してキュー メッセージの確認と消費エラーの処理を実装する方法を検討し、具体的なコード例を示します。メッセージ確認はキュー内にあります。メッセージ確認とは、コンシューマがメッセージを正常に処理した後、メッセージをキューに送信することを意味します。

See all articles