Exemplo n.º 1
0
array_shift($argv);
// 取出 appName ,命令行的第一个参数
$appName = array_shift($argv);
/*
|--------------------------------------------------------------------------
| 初始化 engine
|--------------------------------------------------------------------------
|
| 第一个参数为 APP 的根目录
| 第二个参数为 APP 的名称,用于定位配置文件,配置文件放置在 /config/ 目录,
| 配置文件命名规则为 modules.{appName}.php
| 第三个参数为 APP 的运行模式,支持 web 和 cli,默认是 web , 命令行模式下使用 cli
|
|
*/
$engine = new \Eva\EvaEngine\Engine(__DIR__ . '/', $appName ? $appName : 'evaengine', 'cli');
$engine->loadModules(include __DIR__ . '/config/modules.' . $engine->getAppName() . '.php')->bootstrap();
/** @var  $output Eva\EvaEngine\CLI\Output\ConsoleOutput */
$output = $engine->getDI()->getOutput();
try {
    /** @var  $dispatcher Phalcon\CLI\Dispatcher */
    $dispatcher = $engine->getDI()->getDispatcher();
    $engine->getApplication()->handle(array('module' => $dispatcher->getModuleName(), 'task' => $dispatcher->getTaskName(), 'action' => $dispatcher->getActionName(), 'params' => $dispatcher->getParams()));
} catch (\Phalcon\Exception $e) {
    $output->writeln('<error>  [ERROR]:' . $e->getMessage() . '  </error>');
    $output->writeln('');
    $output->writeln('<comment>' . $e->getTraceAsString() . '</comment>');
    exit(255);
}
// 输出内存使用情况,
$output->writelnInfo(sprintf("\n" . 'Memory usage: %sMB (peak: %sMB), time cost: %ss', memory_get_usage(true) / 1024 / 1024, memory_get_peak_usage(true) / 1024 / 1024, microtime(true) - $_start_time));
Exemplo n.º 2
0
#!/usr/bin/env php
<?php 
//Send email by Gearman queue
require __DIR__ . '/../init_autoloader.php';
$appName = isset($argv[1]) ? $argv[1] : null;
$engine = new \Eva\EvaEngine\Engine(__DIR__ . '/..');
if ($appName) {
    $engine->setAppName($appName);
}
$engine->loadModules(include __DIR__ . '/../config/modules.' . $engine->getAppName() . '.php')->bootstrap();
$worker = $engine->getDI()->getWorker();
$worker->addFunction('sendmailAsync', 'sendmailAsync');
$logger = new Phalcon\Logger\Adapter\File($engine->getDI()->getConfig()->logger->path . 'worker_sendmail.log');
$logger->info(sprintf("Sendmail worker started by appname %s", $engine->getAppName()));
//MySQL interactive_timeout after 8 hours
function refreshDbConnect()
{
    global $engine;
    $di = $engine->getDI();
    $di->getDbMaster()->connect();
    $di->getDbSlave()->connect();
}
function sendmailAsync($job)
{
    global $engine;
    global $logger;
    $jobString = $job->workload();
    $logger->info(sprintf("Start sending mail by %s", $jobString));
    echo sprintf("Start sending mail by %s \n", $jobString);
    try {
        $work = json_decode($jobString, true);