<?php include __DIR__ . '/../lib/IronMQWrapper.php'; $queue_name = "test_queue_name"; include __DIR__ . '/../lib/IronWorkerWrapper.php'; $name = "sampleWorker.php"; $start = get_time(); for ($i = 1; $i <= 10; $i++) { queue_worker($iw, $name); } $worker_time = get_time() - $start; $start = get_time(); for ($i = 1; $i <= 10; $i++) { post_message($ironmq, $queue_name); } $sent_time = get_time() - $start; $start = get_time(); for ($i = 1; $i <= 10; $i++) { get_message($ironmq, $queue_name); } $received_time = get_time() - $start; $details = array("worker" => $worker_time, "sent" => $sent_time, "received" => $received_time); echo json_encode($details); function get_time() { return (double) array_sum(explode(' ', microtime())); } function get_message($ironmq, $queue_name) { $ironmq->getMessage($queue_name); }
<?php include __DIR__ . '/../lib/IronWorkerWrapper.php'; $num_emails = $_REQUEST['num_emails']; $name = "emailWorker.php"; $start = get_time(); queue_worker($iw, $name, $num_emails); $worker_time = get_time() - $start; $details = array("worker" => $worker_time); echo json_encode($details); function get_time() { return (double) array_sum(explode(' ', microtime())); } function queue_worker($iw, $name, $num_emails) { ob_start(); $tmpdir = $_SERVER['TMP_DIR']; if (empty($tmpdir)) { $tmpdir = dirname(__FILE__); } $zipName = $tmpdir . "/{$name}.zip"; $file = IronWorker::zipDirectory(dirname(__FILE__) . "/../workers", $zipName, true); $res = $iw->postCode('emailWorker.php', $zipName, $name); $tasks = array(); for ($i = 1; $i <= $num_emails / 10; $i++) { $payload = array('num_emails' => 10); $task_id = $iw->postTask($name, $payload); } do { $details = $iw->getTaskDetails($task_id);
echo "Task log:\n {$log}\n"; } function get_emails($token, $project_id) { //initializing iron_mq $ironmq = new IronMQ(array('token' => $token, 'project_id' => $project_id)); //getting 100 messages from iron_mq $messages = $ironmq->getMessages('mail', 100); $emails = array(); foreach ($messages as $message) { //adding message body to list of emails $emails[] = $message->body; //deleting message from queue $ironmq->deleteMessage('mail', $message->id); } return $emails; } $payload = getPayload(); //getting list of emails to send from iron_mq $emails = get_emails($payload->token, $payload->project_id); echo "List of emails"; print_r($emails); if (!empty($emails)) { //split array into small arrays with max 10 elems per each $chunked_list = array_chunk($emails, 10); foreach ($chunked_list as $email) { //queueing worker for each array queue_worker($payload, $emails); } } echo "Worker is done";