ホームページ  >  記事  >  バックエンド開発  >  プログラミングにおけるキューの実践的な応用 (php)_PHP チュートリアル

プログラミングにおけるキューの実践的な応用 (php)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:34:18672ブラウズ

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

队列(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 サーバーの現在の実行ステータスを取得します。

4: Zhang Yan の作品 HTTPSQS

HTTPSQS (HTTP Simple Queue Service) は、HTTP GET/POST プロトコルに基づく軽量のオープンソースのシンプルなメッセージ キュー サービスで、データの永続的な保存に Tokyo Cabinet の B+Tree Key/Value データベースを使用します。

ご興味がございましたら、ウェブサイトをご覧ください: http://blog.s135.com/httpsqs_1_2/

5: キューの適用

キューはデータの送信と保存を非同期に処理できます。頻繁にデータベースにデータを挿入し、頻繁に検索エンジンにデータを送信する場合は、キューを使用して非同期挿入を行うことができます。さらに、FLV ビデオ変換、携帯電話のテキスト メッセージの送信、電子メールの送信など、メッセージ キューを介した処理のために、低速の処理ロジックや同時実行性が制限された処理ロジックをバックグラウンドに配置することもできます。 (文/侯恵陽 PHPer.yang)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/322421.html技術記事 1: キューの概念とデータ構造 キュー(Queue)は、限定された操作を備えた線形テーブルです。リストの一端での挿入と他端での削除のみを許可する線形リスト。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。