// Instanciate a new ApnsPHP_Push object $server = new ApnsPHP_Push_Server(ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, '/path/to/apns.pem'); // Set the Root Certificate Autority to verify the Apple remote peer $server->setRootCertificationAuthority('/path/to/entrust_root_certification_authority.pem'); // Set the number of concurrent processes $server->setProcesses(4); // Starts the server forking the new processes $server->start(); _pushLog(array(date('Y-m-d H:i:s'), 'STARTING SERVER')); /* * Main server run loop */ while ($server->run()) { $date = date('Y-m-d H:i:s'); // Check the error queue $aErrorQueue = $server->getErrors(); if (!empty($aErrorQueue)) { var_dump($aErrorQueue); } // get latest queue list($deviceToken, $badgeNum, $text) = popQueue(); // push message if it has correct values if ($deviceToken && $badgeNum && $text) { // Instantiate a new Message with a single recipient $message = new ApnsPHP_Message($deviceToken); $message->setBadge((int) $badgeNum); $message->setSound(); $message->setText(urldecode($text)); // Add the message to the message queue $server->add($message); _pushLog(array(date('Y-m-d H:i:s'), $deviceToken, $badgeNum));