PHP PDO和訊息佇列的個人理解與應用例項分析

2022-09-26 03:45:08 字數 2783 閱讀 6886

什麼是訊息佇列,百度百科說,訊息佇列是在訊息的傳輸過程中儲存訊息的容器。

看著網上林林總總的文章,都說是為了應對高併發,處理資料量超級大的一種資料容器,也可以說是利用各種方式,先把資料儲存在乙個容器中,然後,再慢慢從這個容器中獲取資料,實現非同步運算元據庫的方式,以便降低資料庫的壓力。

不管訊息佇列程式設計客棧是什麼,個人姑且認為它就是一種儲存資料的容器,就這麼簡單明瞭,呵呵,因為本人對訊息佇列這東西研究的比較膚淺。

不過,在這裡,我還是要賣弄一下乙個個人的小實驗**,呵呵,假若下面的東西與訊息佇列相離太遠,那麼請看官可別見怪哦,因為我上面已經宣告的很清楚了,本人對這東西還是不甚了解,只不過是工作之餘賣弄一下『文采'而已,所以,假如真有誤解訊息佇列這個東西,我只能說聲,請你指正我的錯誤,讓筆者迷途知返。

先給出連線mysql資料庫配置檔案mysql.ini的內容:

[database]

driver = mysql

host = 127.0.0.1

port = 3306

dbname = mysql

username = root

password = 1234

pdo::mysql_attr_init_command = set names utf8

資料表檔案queue.sql的內容:

-- 訊息佇列測試

-- 商品表

create table goods(

id int unsigned primary key auto_increment,

goodsname varchar(40) not null comment '商品名',

price decimal(9,2) not null comment '**',

category_id tinyint unsigned not null comment '商品類別id',

sort tinyint comment '商品排序',

description varchar(255) comment '商品描述',

remark varchar(255) comment '備註'

)engine innodb default charset=utf8;

insert into goods values(default,'iphone5s',5999,1,1,'美國入口貴重電子產品','請多多銷售'),(default,'巨集基手提電腦1',4888,3,1,'**划算好電腦',null),(default,'f-30絨衣',200,2,1,'以純白色厚皮羽絨服',null),(default,'n-100鞋子',300,4,1,'nick品牌',null);

下面是簡單的訊息佇列實現pdo商品入庫的**:

鄭重提醒:請認真看我的注釋,請認真看我的注釋,請認真看我的注釋。重要的資訊要說三遍,呵呵!

<?php namespace home;

header('content-type:text/html;charset=utf-8;');

//引入pdo類

use \pdo;

use \pdostatement;

use \pdoexception;

/*簡單訊息佇列*/

class queuecatch(pdoexception $e)

}catch(pdoexception $e)

} /*

*入列*$data陣列

*成功返回1,失敗返回false,或者null

*/public function _unshift($data =array())

$sql = 'default';

foreach($data as $k=>$v)

//把$data轉為sql語句,新增到佇列容器contain中

$sql = 'insert into goods values('.$sql.')';

return @array_unshift(self::$container,$sql);

} /*

*出列*成功返回最後插入的資料id

*失敗返回失敗資訊

*/private static function _pop()

//返回的是,最後插入的id,失敗是null

return self::$pdo->lastinsertid();

}catch(pdoexception $e)

} //析構函式,物件**時呼叫,通過它實現自動讓容器資料入庫

public function __destruct()

}}下面是同一級目錄下呼叫這個類的檔案的內容,當然,你也可以在上面那個queue類的下面呼叫_unshift方法實現訊息佇列的操作

<?php include './queue.php';

use home\queue;//引入命名空間的queue類

$ob = new queue;

//訊息入列

$ob->_unshift(array('goodsname'=>'vivo手機8888','price'=>1120,'category_id'=>1,'sort'=>1,'description'=>'vivo品牌','remark'=>'好用'));

$ob->_unshift(array('goodsname'=>'小公尺手機888','price'=>1998,'category_id'=>1,'sort'=>1,'description'=>'小公尺品牌手機','remark'=>'國產好貨'));

//之所以列印出來,完成是為了看看效果,至於,有沒有實現商品入庫,你得去看看你的資料庫了,呵呵

var_dump(queue::$container);

訊息和訊息佇列

在傳統的c 程式當中,我們呼叫 fopen 函式開啟檔案,這個庫函式最終呼叫作業系統 提供的函式 來開啟檔案。而在 windows 中,不僅使用者程式可以呼叫系統的 api函式,反回來,系統也會呼叫使用者程式,這個呼叫是通過訊息來進行的。windows程式設計是一種完全不同於傳統的 dos方式的程式...

windows佇列訊息和非佇列訊息的詳細解釋

我們已經談到過,windows給視窗傳送訊息,這意味著windows呼叫視窗訊息處理程式。但是,windows程式也有乙個訊息迴圈,它呼叫getmessage從訊息佇列中取出訊息,並且呼叫dispatchmessage將訊息傳送給視窗訊息處理程式。那麼,windows程式是依次等待訊息 類似於普通程...

個人整理的訊息佇列的幾個函式

struct msqid ds struct ipc perm 1.主要函式的介紹 include 1 int msgget key t key,int flag 引數 key 訊息佇列的key值,通過ftok獲得。flag 標誌位 返回 成功返回訊息佇列描述字,否則返回 1。注 該函式初始化結構m...