function goForIt() { $mongo = new MongoClient(); $emails = $mongo->selectDB('emails_tester')->selectCollection('emails'); $servers = ['tcp://gmail-smtp-in.l.google.com:25', 'tcp://alt1.gmail-smtp-in.l.google.com:25', 'tcp://alt2.gmail-smtp-in.l.google.com:25', 'tcp://alt3.gmail-smtp-in.l.google.com:25', 'tcp://alt4.gmail-smtp-in.l.google.com:25']; /** @var Client[] $clients */ $clients = []; $loop = React\EventLoop\Factory::create(); $logger = new \Zend\Log\Logger(); $writer = new \Zend\Log\Writer\Stream('php://output'); $logger->addWriter($writer); $logger->info('Creating clients.'); $start = microtime(1); $checked = 0; for ($i = 0; $i < 100; $i++) { $client = new Client($loop, function ($record) use(&$checked, $emails, $start, $logger) { $record['state'] = 'valid'; $emails->save($record); $checked++; if ($checked % 1000 == 0) { $logger->info("Checked: {$checked}. Speed: " . $checked / (microtime(1) - $start) . " emails/sec."); } }, function ($record, $reason) use(&$checked, $emails, $start, $logger) { $record['state'] = 'invalid'; $emails->save($record); if ($reason !== false) { $logger->warn("Email <{$record['email']}> failed check: {$reason}"); } $checked++; if ($checked % 1000 == 0) { $logger->info("Checked: {$checked}. Speed: " . $checked / (microtime(1) - $start) . " emails/sec."); } }); $clients[] = $client; } $logger->info('Done.'); $loop->addPeriodicTimer(0.001, function () use($clients, $emails, $servers, $logger) { foreach ($clients as $c) { if ($c->getState() === Client::STATE_DISCONNECTED) { $logger->info(spl_object_hash($c) . ": connecting..."); $c->connect($servers[mt_rand(0, count($servers) - 1)]); return; } if ($c->getState() === Client::STATE_BUSY) { continue; } if ($c->getState() === Client::STATE_IDLE) { $record = $emails->findOne(['state' => ['$exists' => false]]); if (!isset($record['email'])) { continue; } $record['state'] = 'in_progress'; $emails->save($record); $c->checkEmail($record); continue; } } }); $loop->run(); }
<?php require_once '../vendor/autoload.php'; if (!file_exists('config.php')) { die('Please create a config.php file that creates a properly defined Pusher object called $pusher and places it in the global scope. <?php $pusher = new Pusher("123123", "12312, "123123"); ?>. You can probably just copy it from your Pusher PHP example source page.'); } require_once 'config.php'; $adapter = new Eschrade\PusherLogger\PusherAdapter(); $adapter->setPusher($pusher); $logger = new Zend\Log\Logger(); $logger->addWriter($adapter); $logger->debug('This is a test debug'); $logger->crit('This is a test crit'); $logger->err('This is a test error'); $logger->notice('This is a test notice'); $logger->warn('This is a test warn'); $logger->info('This is a test info');
/** * Create an entry in the system log. * * The method will check if a logger has been injected. * * @param string $sMessage */ private function log($sMessage) { if (!is_null($this->oLogger) && $this->oLogger instanceof Zend\Log\Logger) { $this->oLogger->warn($sMessage); } }