Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
<?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');
Ejemplo n.º 3
0
 /**
  * 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);
     }
 }