1. 程式人生 > 其它 >PHP訊息佇列rabbitmq——linux環境

PHP訊息佇列rabbitmq——linux環境


?
1 yum install xmlto

  

一.安裝環境

1.依賴包安裝

yum install ncurses-devel unixODBC unixODBC-devel

2.erlang環境

wget http://erlang.org/download/otp_src_18.1.tar.gz
tar -zxvf otp_src_18.1.tar.gz
cd otp_src_18.1
./configure --prefix=/usr/local/erlang
make
make install
# 配置erlang環境變數
vim /etc/profile
# 增加內容:
export PATH
="$PATH:/usr/local/erlang/bin" # 儲存退出,並重新整理變數 source /etc/profile # 測試erlang是否安裝成功 # 安裝完成以後,執行erl看是否能開啟eshell,用’halt().’退出,注意後面的點號,那是erlang的結束符。 [root@localhost src]# erl Erlang/OTP 18 [erts-7.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V7.1 (abort with ^G)

3.安裝rabbitmq依賴檔案,安裝rabbitmq

安裝rabbitmq依賴包

?
1 yum install xmlto

安裝rabbitmq服務端

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.7/rabbitmq-server-3.5.7.tar.gz
tar zxvf rabbitmq-server-3.5.7.tar.gz
cd rabbitmq-server-3.5.7/
make
make install TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man
DOC_INSTALL_DIR=/usr/local/rabbitmq/doc

配置hosts

?
1 2 3 4 vim /etc/hosts # 增加一行內容 # 當前IP地址 繫結HOSTNAME名稱(vim /etc/sysconfig/network) 192.168.226.1xx localhost.localdomain

rabbitmq命令

?
1 2 3 /usr/local/rabbitmq/sbin/rabbitmq-server start & 啟動rabbitmq /usr/local/rabbitmq/sbin/rabbitmqctl status 檢視狀態 /usr/local/rabbitmq/sbin/rabbitmqctl stop 關閉rabbitmq

訪問192.168.226.1xx:15672可進入rabbit管理介面;

設定開機自啟動配置

?
1 2 3 #!/bin/sh #start rabbitMq sudo /usr/local/rabbitmq/sbin/rabbitmq-server & > /usr/local/rabbitmq/logs/rabbitmq.log 2>&1

5.RabbitMQ PHP擴充套件安裝

安裝rabbitmq-c依賴包

?
1 yum install libtool autoconf

安裝rabbitmq-c

wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz
tar zxf rabbitmq-c-0.8.0.tar.gz
cd rabbitmq-c-0.8.0
./configure --prefix=/usr/local/rabbitmq-c-0.8.0
make && make install

安裝php拓展 amqp

wget -c http://pecl.php.net/get/amqp-1.9.3.tgz
tar zxf amqp-1.9.3.tgz
cd amqp-1.9.3
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0
make && make install

這裡注意一下:我的是PHP7,所以安裝rabbitmq-c和amqp安裝的都是最新版本。網上很多教程都是基於PHP5的安裝,rabbitmq-c版本一般都是0.5.0,amqp是1.6.這裡注意根據你的PHP版本做好區分。不然在安裝amqp,make編譯的時候會錯。

編輯php.ini檔案,增加amqp擴充套件支援

?
1 vim /usr/local/php/etc/php.ini

新增一行:

?
1 extension=amqp.so

重啟php-fpm

?
1 /etc/init.d/php-fpm restart

檢視是否安裝成功,輸出phpinfo()或者輸入 php -m 都可以檢視;

至此,所有的環境搭建完畢!

二.執行demo

我們把消費者的程式碼稍微優化一下,在接受訊息的時候,只有在有訊息的時候處理:

如圖

我們開啟兩個消費者程序監聽佇列,然後生產者開始投放;

執行結果如圖

可以看到,生產者投放了五個訊息,被兩個消費者依次有序的進行取出佇列處理。