के साथ मल्टी-प्रोसेस php मैं libevent के साथ एक साधारण php websocket सर्वर बनाने में सक्षम हूं, लेकिन जब मैं इसे मल्टीप्रोसेसिंग करने की कोशिश कर रहा हूं तो मैं अटक गया हूं।libevent
उदाहरण के लिए इस एकल प्रोसेसिंग
<?php
$socket = stream_socket_server ('tcp://0.0.0.0:2000', $errno, $errstr);
stream_set_blocking($socket, 0);
$base = event_base_new();
$event = event_new();
event_set($event, $socket, EV_READ | EV_PERSIST, 'ev_accept', $base);
event_base_set($event, $base);
event_add($event);
event_base_loop($base);
$GLOBALS['connections'] = array();
$GLOBALS['buffers'] = array();
function ev_accept($socket, $flag, $base) {
static $id = 0;
$connection = stream_socket_accept($socket);
stream_set_blocking($connection, 0);
$id += 1;
$buffer = event_buffer_new($connection, 'ev_read', NULL, 'ev_error', $id);
event_buffer_base_set($buffer, $base);
event_buffer_timeout_set($buffer, 30, 30);
event_buffer_watermark_set($buffer, EV_READ, 0, 0xffffff);
event_buffer_priority_set($buffer, 10);
event_buffer_enable($buffer, EV_READ | EV_PERSIST);
// we need to save both buffer and connection outside
$GLOBALS['connections'][$id] = $connection;
$GLOBALS['buffers'][$id] = $buffer;
}
function ev_error($buffer, $error, $id) {
event_buffer_disable($GLOBALS['buffers'][$id], EV_READ | EV_WRITE);
event_buffer_free($GLOBALS['buffers'][$id]);
fclose($GLOBALS['connections'][$id]);
unset($GLOBALS['buffers'][$id], $GLOBALS['connections'][$id]);
}
function ev_read($buffer, $id) {
while ($read = event_buffer_read($buffer, 256)) {
var_dump($read);
}
}
?>
है लेकिन जब मैं समारोह में ऐसा ev_read
function ev_read($buffer, $id) {
while ($read = event_buffer_read($buffer, 256)) {
$pid = pcntl_fork();
switch ($pid) {
case -1: // Error
die('Fork failed, your system is b0rked!');
break;
case 0: // Child
event_buffer_write($buffer,"asdawdasd");
exit(0);
break;
}
} }
यह डेटा भेजने does not को ...
तो मैं एक कैसे कर सकते हैं मल्टीप्रोसेसिंग PHP सॉकेट सर्वर?
आप नई प्रक्रियाओं को क्यों फोर्क करना चाहते हैं? यदि आप libevent का उपयोग कर रहे हैं तो एसिंक्रोनस "बहु-प्रोसेसिंग" दृष्टिकोण का प्रयास क्यों न करें? – Robin
यह कैसे करें? – Deadworldisee
मुझे कुछ संकेत दें, इसे php में कैसे बनाएं ... – Deadworldisee