Heim > Backend-Entwicklung > PHP-Tutorial > Linux-Tutorial: Tutorial zur manuellen Kompilierung der PHP-AMQP-Erweiterung unter Ubuntu

Linux-Tutorial: Tutorial zur manuellen Kompilierung der PHP-AMQP-Erweiterung unter Ubuntu

WBOY
Freigeben: 2016-07-29 09:14:42
Original
1228 Leute haben es durchsucht

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.
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.

(1) Grundkonzepte

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.
  • Austausch: Nachrichtenaustausch, der die Regeln festlegt und an welche Warteschlange die Nachricht weitergeleitet wird.
  • Warteschlange: Nachrichten-Warteschlange Träger, jede Nachricht wird in eine oder mehrere
  • Warteschlangen
  • gestellt. Bindung: Bindung, ihre Funktion besteht darin, Austausch und Warteschlange gemäß Routing-Regeln zu binden. Routing-Schlüssel: Routing-Schlüsselwort, Exchange übermittelt Nachrichten basierend auf diesem Schlüsselwort.
  • vhost: virtueller Host können in einem Broker geöffnet werden, um die Berechtigungen für verschiedene Benutzer zu trennen.
  • Produzent: Nachrichtenproduzent ist das Programm, das Nachrichten übermittelt.
  • Verbraucher: Nachrichtenkonsument ist das Programm, das Nachrichten akzeptiert.
  • Kanal: Nachrichtenkanal In jeder Verbindung des Clients können mehrere Kanäle eingerichtet werden, und jeder Kanal stellt eine Sitzungsaufgabe dar.
  • (2) Nutzungsprozess
  • Das heißt, Client – ​​AMQP-Server – Client
Der Client auf der linken Seite sendet eine Nachricht an den Client auf der rechten Seite. Der Vorgang ist:

Verbindung abrufen

Kanal abrufen
  • Austausch definieren, Warteschlange
  • verwendet einen RoutingKey, der die Warteschlange an einen Exchange bindet
  • Senden Sie die Nachricht an die entsprechende Warteschlange, indem Sie einen Exchange und einen RoutingKey angeben
  • Der Empfänger erhält dann auch die Verbindung, wenn er sie empfängt Ruft den Kanal ab und gibt dann eine Warteschlange an, um Nachrichten direkt aus der Warteschlange abzurufen, um die es sich handelt. Es ist egal, wie Exchange, RoutingKey und die Bindung erfolgen. Es ist in Ordnung, Nachrichten aus der entsprechenden Warteschlange abzurufen 🎜>Aufgrund der Standardquelle von Ubuntu gibt es kein php5-amqp-Paket, daher müssen Sie es manuell kompilieren, um amqp verwenden zu können.
  • Vorbereitungsarbeiten
  • :
PHP-Kompilierungstools installieren

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>
Nach dem Login kopieren

Klonen Sie den Quellcode und kompilieren Sie

<code>sudo apt<span>-get</span> install librabbitmq<span>-dev</span></code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Die neueste Version ist 1.4.0

<code>autoreconf -i && ./configure && <span>make</span> && sudo <span>make</span> install</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Produktion Seite

<code><span>sudo</span><span>echo</span><span>"extension = amqp.so"</span> > /etc/php5/conf.d/amqp.ini</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage