public function __destruct() { if ($this->ipcKey->isOwner(getmypid())) { $this->ipcKey->delete(); return msg_remove_queue($this->id); } }
public function __destruct() { if ($this->keyPrefix . getmypid() === $this->getKey()) { unlink('/tmp/' . sha1($this->getKey())); return msg_remove_queue($this->id); } }
/** * {@inheritdoc} */ public function clear() { if (!msg_remove_queue($this->getQueue())) { throw new QueueException($this, 'Failed to destroy the queue.'); } $this->queue = null; }
/** * Destroy every resource and wait for zombies. */ protected function destroyAndWaitForChildren() { msg_remove_queue($this->getQueueManager()); sem_remove($this->getLockManager()); for ($i = 0; $i <= $this->childNumber; $i++) { pcntl_wait($status); } }
public function close() { $this->closed = true; do { $this->out(); --$this->msg_count; } while ($this->msg_count >= 0); msg_remove_queue($this->ipc); file_exists($this->ipc_fn) && @unlink($this->ipc_fn); }
public function __construct($message, $option = []) { $this->id = crc32($message); $this->perms = $option['perms'] ? $option['perms'] : 0666; if ($option['reset']) { $msg = msg_get_queue($this->id, $this->perms); $msg && msg_remove_queue($msg); } $this->msg = msg_get_queue($this->id, $this->perms); }
public function readAction() { $msg_id = msg_get_queue($this->_key, 0600); while (true) { if (msg_receive($msg_id, 1, $msg_type, 16384, $msg, true, 0, $msg_error)) { list($id, $msg) = split('!', $msg); echo json_encode(array('id' => $id, 'msg' => $msg)); } } msg_remove_queue($msg_id); }
public function start() { set_time_limit(0); if (file_exists($this->file)) { unlink($this->file); } file_put_contents($this->file, ''); $this->queue = msg_get_queue(ftok($this->file, 'R'), 0777); msg_set_queue($this->queue, []); msg_remove_queue($this->queue); $this->queue = msg_get_queue(ftok($this->file, 'R'), 0777); $this->listen(); }
public static function initQueue($queue_file) { if (!file_exists($queue_file)) { touch($queue_file); } $msg_id = msg_get_queue(ftok($queue_file, 'r'), 0666); // Remove any messages in queue $queue = msg_stat_queue($msg_id); if ($queue['msg_qnum'] > 0) { msg_remove_queue($msg_id); $msg_id = msg_get_queue(ftok($queue_file, 'r'), 0666); } return $msg_id; }
public function drop() { try { $q = msg_get_queue($this->id, ONPHP_IPC_PERMS); } catch (BaseException $e) { // removed in race return true; } if (!msg_remove_queue($q)) { // trying to flush manually $type = $msg = null; while (msg_receive($q, 0, $type, 2, $msg, false, MSG_IPC_NOWAIT)) { // do nothing } } return true; }
/** * The class destructor. */ public function __destruct() { parent::__destruct(); if ($this->iAmParent()) { $desiredType = 1; $option_receive = MSG_IPC_NOWAIT; $stats = msg_stat_queue($this->queueResourceResponse); $queueMessageSize = $stats['msg_qbytes']; // the Report $messageReport = ''; // receive the report $stats = msg_stat_queue($this->queueResourceResponse); while ($stats['msg_qnum']) { //for($i=0;count($all_servers);$i++){ $status = msg_receive($this->queueResourceResponse, $desiredType, $type, $queueMessageSize, $mixed, true, $option_receive); if ($status == true) { $messageReport .= $mixed['message']; if ($mixed['return'] < 0) { // check if server counldn't do the backups because shutdown doesn't work if ($mixed['error'] && $mixed['error']['error']['error'] == '_ERR_VM_BACKUP_STILL_RUNNING_') { $etva_server = $mixed['server']; $this->log("[WARN] Receive error that VM '" . $etva_server->getName() . "' couldn't make backup beacuse is still running, so i will try start again..."); $etva_node = $etva_server->getEtvaNode(); if ($etva_node) { $res_start = $etva_node->soapSend(EtvaServer_VA::SERVER_START, array('uuid' => $etva_server->getUuid(), 'name' => $etva_server->getName())); $this->log("[WARN] Start '" . $etva_server->getName() . "' VM and receive the following message: " . print_r($res_start, true)); } } } } else { $err_m = "[ERROR] Receive error when wait for response... " . print_r($err, true); $messageReport .= $err_m . "\r\n"; $this->log($err_m); } $stats = msg_stat_queue($this->queueResourceResponse); } msg_remove_queue($this->queueResourceResponse); //$this->log($messageReport); $this->sendReport($messageReport); } }
<?php $tests = array(null, 'foo'); foreach ($tests as $q) { if ($q === null) { do { $id = ftok(__FILE__, chr(mt_rand(0, 255))); } while (msg_queue_exists($id)); $q = msg_get_queue($id) or die("Failed to create queue"); msg_remove_queue($q) or die("Failed to close queue"); } echo "Using '{$q}' as queue resource:\n"; $errno = 0; var_dump(msg_set_queue($q, array('msg_qbytes' => 1))); var_dump(msg_stat_queue($q)); var_dump(msg_receive($q, 0, $null, 1, $msg, true, 0, $errno)); var_dump($errno != 0); // again, but triggering an E_WARNING var_dump(msg_receive($q, 0, $null, 0, $msg)); var_dump(msg_send($q, 1, 'foo', true, true, $errno)); var_dump($errno != 0); } echo "Done\n";
/** * Delete message from queue * * @param int $pid * @param callable $callback function handler * @return boolean */ public function delete($pid = null, callable $callback = null) { $this->queuePid = is_null($pid) === false ? $pid : $this->queuePid; if (msg_queue_exists($this->queuePid) === true) { msg_remove_queue(msg_get_queue($this->queuePid)); return true; } return false; }
public function __destruct() { // Shut down and remove the queue $success = msg_remove_queue($this->message_queue_resource); assert($success, "Failed to remove queue with ID {$this->message_queue_resource}"); }
/** * Removes the semaphore if it still exists. * * @throws SemaphoreException If the operation failed. */ public function free() { if (is_resource($this->queue) && msg_queue_exists($this->key)) { if (!msg_remove_queue($this->queue)) { throw new SemaphoreException('Failed to free the semaphore.'); } $this->queue = null; } }
<?php $key = ftok(dirname(__FILE__) . "/001.phpt", "p"); $q = msg_get_queue($key); msg_send($q, 1, "hello") or print "FAIL\n"; $type = null; if (msg_receive($q, 0, $type, 1024, $message)) { echo "TYPE: {$type}\n"; echo "DATA: {$message}\n"; } if (!msg_remove_queue($q)) { echo "BAD: queue removal failed\n"; }
public function destroy() { return msg_remove_queue($this->queue); }
<?php $id = ftok(__FILE__, 'r'); msg_remove_queue(msg_get_queue($id, 0600)); var_dump(msg_queue_exists($id)); $res = msg_get_queue($id, 0600); var_dump($res); var_dump(msg_queue_exists($id)); var_dump(msg_remove_queue($res)); var_dump(msg_queue_exists($id)); echo "Done\n";
protected function tearDown() { msg_remove_queue($this->queue->getResource()); $this->queue = null; }
/** * Destroys a message queue. * * @return bool True if the queue destroyed is successfull */ public function destroy() { $this->checkState(); if (msg_remove_queue($this->handle)) { $this->closed = true; } return $this->closed; }
break; case "关键词检索": $buf = '4'; break; } $filename_w = $temp . $buf . ".txt"; if (copy($filename_r, $filename_w) == FALSE) { echo "Creating tasklist failed."; } if (!msg_send($message_queue, 1, $msg . $buf, true, true, $msg_err)) { echo "Msg not sent because {$msg_err}\n"; } unlink($filename_r); //重新开一个消息队列,防止出现php接受错误的消息 $message_queue_key = ftok($filename_w, 'a'); $message_queue = msg_get_queue($message_queue_key, 0777); if (msg_receive($message_queue, 2, $msg_type, 1024, $msg_result, true, 0, $msg_error)) { } else { echo "Received {$msg_error} fetching message\n"; } msg_remove_queue($message_queue); session_start(); $_SESSION["filename"] = $msg . $buf; header("Location: result.php"); } else { echo "Please choose a task type"; } ?> </body> </html>
public function clear() { msg_remove_queue(msg_get_queue($this->getOption('key'))); }
/** * 删除一个队列 * @return bool */ public function queue_remove() { return \msg_remove_queue($this->queue); }
/** * Remove a message queue * * @throws io.IOException */ public function removeQueue() { // refresh queue $this->stat = msg_stat_queue($this->id); if (0 !== $this->stat['msg_qnum']) { throw new IOException('Queue cannot be removed. There are unreceived messages.'); } msg_remove_queue($this->id); }
function delete() { $this->logger->debug(sprintf("Delete queue 0x%08x", $this->key)); return msg_remove_queue($this->seg); }
public function removeShm() { if (!empty($this->queue)) { if (!msg_remove_queue($this->queue)) { syslog(LOG_WARNING, "Error removing queue key " . $this->queueKey); } $this->queue = NULL; } }
exit(1); } $queue = msg_get_queue($token); var_dump(msg_queue_exists($token)); $pid = pcntl_fork(); if ($pid == 0) { $q = msg_get_queue($token); msg_send($q, 2, "start"); msg_receive($q, 1, $type, 100, $msg); msg_send($q, 2, $msg); // echo exit(0); } msg_receive($queue, 2, $type, 100, $msg); var_dump($msg); msg_send($queue, 1, "ok"); msg_receive($queue, 2, $type, 100, $msg); var_dump($msg); $ret = @msg_send($queue, 0, 'msg', false, false, $s_error_code); var_dump($ret); var_dump(22 === $s_error_code); // 22 - invalid argument $ret = msg_receive($queue, 0, $type, 100, $msg, false, MSG_IPC_NOWAIT, $r_error_code); var_dump($ret); var_dump(MSG_ENOMSG === $r_error_code); $ret = msg_stat_queue($queue); var_dump($ret[$s_msg_qnum]); msg_set_queue($queue, array("msg_perm.mode" => 0666)); msg_remove_queue($queue); pcntl_waitpid($pid, $status); unlink($filename);
$y = @sqlite_udf_decode_binary($x); unset($x); break; case 'dos18': $MSGKEY = 519052; $msg_id = @msg_get_queue($MSGKEY, 0600); if (!@msg_send($msg_id, 1, 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH', false, true, $msg_err)) { echo "Msg not sent because {$msg_err}\n"; } if (@msg_receive($msg_id, 1, $msg_type, 0xffffffff, $_SESSION, false, 0, $msg_error)) { echo "{$msg}\n"; } else { echo "Received {$msg_error} fetching message\n"; break; } @msg_remove_queue($msg_id); break; case 'dos19': $url = "php://filter/read=OFF_BY_ONE./resource=/etc/passwd"; @fopen($url, "r"); break; case 'dos20': $hashtable = str_repeat("A", 39); $hashtable[5 * 4 + 0] = chr(0x58); $hashtable[5 * 4 + 1] = chr(0x40); $hashtable[5 * 4 + 2] = chr(0x6); $hashtable[5 * 4 + 3] = chr(0x8); $hashtable[8 * 4 + 0] = chr(0x66); $hashtable[8 * 4 + 1] = chr(0x77); $hashtable[8 * 4 + 2] = chr(0x88); $hashtable[8 * 4 + 3] = chr(0x99);
/** * 销毁共享内存以及消息队列 * @return void */ protected static function removeShmAndQueue() { if (self::$shmId) { shm_remove(self::$shmId); } if (self::$queueId) { msg_remove_queue(self::$queueId); } }
function sig_handler_parent($signo) { global $log; global $fork_pids; global $pid_logger; global $pid_contacts; global $msg_queue; global $config; if ($signo == SIGTERM || $signo == SIGHUP || $signo == SIGINT) { /* Terminate the daemon and all the associated threads We send a shutdown command for each thread and then wait for them to cleanly terminate. */ $log->debug("Shutdown POSIX signal recieved"); for ($i = 0; $i < count($fork_pids); $i++) { msg_send($msg_queue, MESSAGE_CTRL, "shutdown"); } foreach ($fork_pids as $pid) { $log->debug("Waiting for child processes to complete... ({$pid})"); pcntl_waitpid($pid, $status, WUNTRACED); } /* Clean Wrapup */ $log->debug("[master] Peak memory usage of " . memory_get_peak_usage() . " bytes"); $log->info("[master] Clean Shutdown"); // send shutdown to contacts fork if (!empty($pid_contacts)) { posix_kill($pid_contacts, SIGTERM); pcntl_waitpid($pid_contacts, $status, WUNTRACED); } // send shutdown to logger fork posix_kill($pid_logger, SIGTERM); pcntl_waitpid($pid_logger, $status, WUNTRACED); // remove message queue msg_remove_queue($msg_queue); unlink($config["SMStoXMPP"]["app_lock"]); exit; } else { print "Unknown signal of {$signo}!\n"; $log->info("Recieved unproccessible POSIX signal of \"{$signo}\", ignoring"); } }