Linux-Tutorial: Tutorial zur manuellen Kompilierung der PHP-AMQP-Erweiterung unter Ubuntu
Ist Shenma amqp? Die Einführung ist hier. Einfach ausgedrückt handelt es sich um das erweiterte Warteschlangen-Protokoll. Diese Erweiterung soll es PHP ermöglichen, das amqp-Protokoll und die zugehörige Warteschlange-Dienstkommunikation zu unterstützen.
Vorteile: Es kann das Parallelitätsproblem der Serververarbeitung lösen.
(1) Grundkonzepte
Das Advanced Messaging Queuing Protocol (AMQP) ist eine Protokollspezifikation auf Anwendungsebene, die für asynchrone Nachrichtenübermittlung verwendet wird. Als Wire-Layer-Protokoll und nicht als API (wie JMS) können AMQP-Clients Nachrichten unabhängig von ihrer Quelle beliebig senden und empfangen. Mittlerweile gibt es bereits eine ganze Reihe von Servern und Clients für verschiedene Plattformen, die zum Einsatz kommen können.
RabbitMQ ist ein beliebtes Open-Source-Messaging-
Warteschlangensystem, das in Erlang-Sprache entwickelt wurde. RabbitMQ ist eine Standardimplementierung von AMQP (Advanced Message Queuing Protocol). Wenn Sie mit AMQP nicht vertraut sind, wird es schwierig sein, die RabbitMQ-Dokumentation direkt zu lesen. Allerdings gibt es nur wenige Schlüsselkonzepte, die hier kurz vorgestellt werden. Ein paar Konzepterklärungen:
Broker: Einfach ausgedrückt handelt es sich um eine Nachrichten-Warteschlange
Server-Entität.Verbindung abrufen
Rabbitmq-Bibliothek installieren
Wenn Sie Linux verwenden Die Distribution verfügt nicht über ein vorgefertigtes librabbitmq-dev-Paket, Sie können es also kompilieren und installieren, indem Sie den Quellcode herunterladen Wenn Sie Git dann nicht installiert haben, installieren Sie bitte Git, da wir das erhalten müssen Quellcode aus dem offiziellen Repository<code>sudo apt<span>-get</span> install php5<span>-dev</span></code>
Klonen Sie den Quellcode und kompilieren Sie
<code>sudo apt<span>-get</span> install librabbitmq<span>-dev</span></code>
Kompilieren Sie die Bibliothek
Dann müssen wir den Quellcode der PHP-Erweiterung herunterladen , die Adresse ist hier: http ://pecl.php.net/package/amqp<code>git <span>clone</span> git:<span>//<strong>github</strong>.com/alanxz/rabbitmq-c.git</span> cd rabbitmq-c git submodule init git submodule update</code>
Die neueste Version ist 1.4.0
<code>autoreconf -i && ./configure && <span>make</span> && sudo <span>make</span> install</code>
Erstellen Sie die Konfiguration Datei
Dann starten Sie Ihren Webserver oder PHP-FPM neu und drucken Sie phpinfo. Wenn Sie den folgenden Inhalt sehen, bedeutet dies, dass die Erweiterung installiert ist Beispiel<code>wget http://pecl<span>.php</span><span>.net</span>/get/amqp-<span>1.4</span><span>.0</span><span>.tgz</span>tar zxf amqp-<span>1.4</span><span>.0</span><span>.tgz</span> cd amqp-<span>1.4</span><span>.0</span>/ phpize && ./configure --with-amqp && make && sudo make install</code>
Produktion Seite
<code><span>sudo</span><span>echo</span><span>"extension = amqp.so"</span> > /etc/php5/conf.d/amqp.ini</code>
Verbraucherseite
Das Obige stellt die manuelle Kompilierung des PHP-AMQP-Erweiterungs-Tutorials unter Linux unter Ubuntu vor, einschließlich der relevanten Inhalte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.
<code><span>/** * PHP amqp(RabbitMQ) Demo - publisher * 生产者:发送消息 * 逻辑:创建连接-->创建channel-->创建交换机<strong>对象</strong>-->发送消息* */</span><span>//配置信息</span><span>$conn_args</span> = <span>array</span>( <span>'host'</span> => <span>'localhost'</span>, <span>'port'</span> => <span>'5672'</span>, <span>'login'</span> => <span>'guest'</span>, <span>'password'</span> => <span>'guest'</span>, <span>'vhost'</span>=><span>'/'</span> ); <span>$e_name</span> = <span>'e_lamp'</span>; <span>//交换机名</span><span>$k_route</span> = <span>'key_1'</span>; <span>//路由key</span><span>//创建连接和channel</span><span>$conn</span> = <span>new</span> AMQPConnection(<span>$conn_args</span>); <span>if</span> (!<span>$conn</span>->connect()) { <span>die</span>(<span>"Cannot connect to the broker!\n"</span>); } <span>$channel</span> = <span>new</span> AMQPChannel(<span>$conn</span>); <span>//消息内容</span><span>$message</span> = <span>"TEST MESSAGE! 测试消息!"</span>; <span>//创建交换机<strong>对象</strong></span><span>$ex</span> = <span>new</span> AMQPExchange(<span>$channel</span>); <span>$ex</span>->setName(<span>$e_name</span>); <span>//发送消息</span><span>//$channel->startTransaction(); //开始事务</span><span>for</span>(<span>$i</span>=<span>0</span>; <span>$i</span><<span>5</span>; ++<span>$i</span>){ <span>echo</span><span>"Send Message:"</span>.<span>$ex</span>->publish(<span>$message</span>, <span>$k_route</span>).<span>"\n"</span>; } <span>//$channel->commitTransaction(); //提交事务</span><span>$conn</span>->disconnect();</code>