2012-08-30 9 views
5

Desidero utilizzare l'editore/sottoscrittore ZeroMQ per inviare dati dalla mia applicazione Web a più server.Utilizzo di ZeroMQ in uno script PHP all'interno di Apache

io uso Apache e PHP per il web app, il mio script php funziona come segue:

//Initialization 
$context = new ZMQContext(); 
$publisher = $context->getSocket(ZMQ::SOCKET_PUB); 
$publisher->bind("tcp://*:5556"); 

//Then publishing for testing: 

$publisher->send("test"); 
$publisher->send("test"); 
$publisher->send("test"); 
$publisher->send("test"); 
$publisher->send("test"); 

Per la prova ho adattato un abbonato dalla documentazione in python:

import sys 
import zmq 

# Socket to talk to server 
context = zmq.Context() 
socket = context.socket(zmq.SUB) 

socket.connect ("tcp://localhost:5556") 

# Subscribe to zipcode, default is NYC, 10001 
socket.setsockopt(zmq.SUBSCRIBE, "") 

print "Waiting..." 
# Process 5 updates 
for update_nbr in range (5): 
    string = socket.recv() 
    print string 

Il tutto funziona quando eseguo lo script php dalla riga di comando ma non funziona tramite Apache (quando lo script viene eseguito tramite un browser Web).

C'è qualcosa che dovrei fare per la mia configurazione di Apache per farlo funzionare?

Grazie

Alexandre

risposta

2

sembra che l'unico problema era che la connessione non ha avuto il tempo da stabilire.

L'aggiunta di una sospensione all'editore dopo l'associazione e prima che l'invio ha risolto il problema, anche se non abbastanza elegantemente.

La questione è spiegata qui:

http://zguide.zeromq.org/page:all#Getting-the-Message-Out

Problemi correlati