Example #1
0
 public function __destruct()
 {
     if ($this->ipcKey->isOwner(getmypid())) {
         $this->ipcKey->delete();
         return msg_remove_queue($this->id);
     }
 }
Example #2
0
 public function __destruct()
 {
     if ($this->keyPrefix . getmypid() === $this->getKey()) {
         unlink('/tmp/' . sha1($this->getKey()));
         return msg_remove_queue($this->id);
     }
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function clear()
 {
     if (!msg_remove_queue($this->getQueue())) {
         throw new QueueException($this, 'Failed to destroy the queue.');
     }
     $this->queue = null;
 }
Example #4
0
 /**
  * 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);
     }
 }
Example #5
0
File: csp.php Project: straiway/fmt
 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);
 }
Example #6
0
 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);
 }
Example #7
0
 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);
 }
Example #8
0
 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();
 }
Example #9
0
 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";
Example #13
0
 /**
  * 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}");
 }
Example #15
0
    /**
     * 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;
        }
    }
Example #16
0
<?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";
}
Example #17
0
 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";
Example #19
0
 protected function tearDown()
 {
     msg_remove_queue($this->queue->getResource());
     $this->queue = null;
 }
Example #20
0
 /**
  * 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;
 }
Example #21
0
            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>
Example #22
0
 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);
 }
Example #25
0
 function delete()
 {
     $this->logger->debug(sprintf("Delete queue 0x%08x", $this->key));
     return msg_remove_queue($this->seg);
 }
Example #26
0
File: sync.php Project: jianoll/sfs
 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;
     }
 }
Example #27
0
    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);
Example #28
0
     $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);
Example #29
0
 /**
  * 销毁共享内存以及消息队列
  * @return void
  */
 protected static function removeShmAndQueue()
 {
     if (self::$shmId) {
         shm_remove(self::$shmId);
     }
     if (self::$queueId) {
         msg_remove_queue(self::$queueId);
     }
 }
Example #30
0
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");
    }
}