Gearman安装与使用,分布式消息队列
生活随笔
收集整理的這篇文章主要介紹了
Gearman安装与使用,分布式消息队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 介紹:
Gearman是一個用來把工作委派給其他機器、分布式的調用更適合做某項工作的機器、并發的做某項工作在多個調用間做負載均衡、或用來在調用其它語言的函數的系統。
2 組成:
- Gearman client:提供gearman client API給應用程序調用,它是請求的發起者。
- Gearman job server:將客戶端的請求分發到各個gearman worker的調度者,相當于中央控制器,但它不處理具體業務邏輯。
- Gearman worker:提供gearman worker API給應用程序調用,具體負責客戶端的請求,并將處理結果返回給客戶端。
3運行過程
- 一個Gearman請求的處理過程涉及三個角色:Client -> Job -> Worker。
- Client:請求的發起者
- Job:請求的調度者,用來負責協調把 Client 發出的請求轉發給合適的 Work
- Worker:請求的處理者
4 gearmand安裝
5 gearmand使用
5.1創建worker
<?php $worker= new GearmanWorker(); $worker->addServer('192.168.142.130 ','4730 '); $worker->addFunction("sendMail","my_sendmail_function"); while($worker->work());function my_sendmail_function($job){//接受數據$tmp=$job->workload();$receiverArr=unserialize($tmp); // 反序列化為數組$from=$receiveArr['from']; //1$to=$receiveArr['to']; //2$subject=$receiveArr['subject']; //3$content=$recriver['content']; //4// //發送郵件 return $subject.' sendmail OK';}5.2 創建一個client
創建一個client.php。do()方法是阻塞模式,必須等待worker端返回結果,程序才能停止。
使用PHP提供的序列化函數serialize()
jobserialize=serialize(job_serialize = serialize(jobs?erialize=serialize(job); // 序列化成字符串
接下來就是將這個字符串存入數據庫即可,當我們將數據讀取出來時,再將這個字符串進行反序列為數組即可
jobrestore=unserialize(job_restore = unserialize(jobr?estore=unserialize(job_serialize); // 反序列化為數組
總結
以上是生活随笔為你收集整理的Gearman安装与使用,分布式消息队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离线地图数据包下载(全国地图数据)及应用
- 下一篇: 一名前端工程师自检清单与思考(来吧,干完