使用定时任务结合Yii2的command每天定时生成goaccess日志

  •   
  • 1918
  • Linux
  • 0
  • super_dodo
  • 2020/11/25

其实每天生成有很多种方法,主流的还是推荐shell脚本。网站上有很多类似的方法,按照步骤操作即可。建议多查阅goaccess的日志。

这个dodo为了简便省事,直接使用yii2的command+crontab的形式实现每天都生成goaccess的html文档日志。可以生成多个项目的。直接上伪代码。


namespace app\commands;
use Yii;
use yii\console\Controller;

//goAccess定时任务
class GoAccessController extends Controller {
#每天晚上的23:59去定时的执行这个脚本
//59 23 * * * nohup /home/dodo_dev/yii go-access/gen-log > /home/dodo_dev/runtime/go-access_gen_log.log 2>&1 &
public function actionGenLog(){
    set_time_limit(0);
    ini_set('memory_limit','512M');
    echo 'StartTime :'.date('Y-m-d H:i:s')."\r\n";

    //每天晚上11:55去生成当天的
    $todayDate = date('Ymd');
    $appList[] = 'www_dodo_com_access';
    $appList[] = 'www_book_net_access';
    $appList[] = 'www_dodobook_net_access';

    foreach ($appList as $appName){

        $todayLog = "/var/log/nginx/{$appName}.log-{$todayDate}";
        $todayHtml = "/home/dodo_dev/runtime/{$appName}_{$todayDate}.html";

        // 再使用goaccess生成网页
        $cmd = "/usr/local/bin/goaccess -f $todayLog -a > $todayHtml";

        $rt = exec($cmd);
        var_dump($rt);
    }

    echo 'End Time :'.date('Y-m-d H:i:s')."\r\n";
    return true;
}
}