2017-06-17 2 views
0

Ich habe Geth Ether Testnet eingerichtet. Ich möchte über IPC PHP mit dem Client kommunizieren. Ich bin auf Ubuntu. Dies ist mein aktueller Code: (FIFO)PHP IPC mit Geth Ethereum

$myValType = NULL; 
$msg = ""; 
($key = ftok("/home/john/.ethereum/testnet/geth.ipc","=")); 
$queue = msg_get_queue($key); 
msg_send($queue, 1, '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}'); 
msg_receive($queue,0,$myValType,2048,$msg); 
dd($msg); # (Die and Dump, Laravel) 

Dies ist die IPC-Datei:

srwxrwxrwx 1 john john 0 Jun 17 01:30 geth.ipc= 

Dieses feinen

echo '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' | nc -U geth.ipc 

Ich bin nicht sicher, wie man tatsächlich funktioniert mit dem Kunden kommunizieren. Es gibt keine Antwort von ihm beim Senden. Unter msg_receive wird nur die ursprüngliche gesendete Nachricht zurückgegeben.

Jemand has expirience und sei so nett und gebe mir eine richtige Lösung?

Antwort

0

Update: Ich fand heraus, wie es funktioniert. Ich benutzen PHP Sockets

$sock = socket_create(AF_UNIX, SOCK_STREAM, 0); 
socket_connect($sock, "/home/john/.ethereum/testnet/geth.ipc",1); 
$myBuf = null; 
$msg = "{\"jsonrpc\":\"2.0\",\"method\":\"rpc_modules\",\"params\":[],\"id\":1}"; 
socket_send($sock, $msg, strlen($msg), MSG_EOF); 
socket_recv ($sock , $myBuf , 100 ,MSG_WAITALL ); 

Stattdessen MSG-Warteschlangen verwenden konnte ich es mit einfachen PHP Sockel zum IPC Datei funktioniert!