首先保证php cli模式下支持yaf,请参考本博客
http://lhdst-163-com.iteye.com/blog/2337379
YAF框架下添加定时任务支持很简单。
可以新建一个cli目录,放入index.php
<?php
define('BENCHAMRK_START', microtime(TRUE));
ini_set('display_errors','On');
error_reporting(E_ALL & ~E_DEPRECATED);
date_default_timezone_set("Asia/Hong_Kong");
define('ROOT_PATH', realpath(dirname(dirname(__FILE__))));
define('APPLICATION_PATH', ROOT_PATH . '/application');
define('PUBLIC_PATH', ROOT_PATH . '/public');
define('VENDOR_PATH', ROOT_PATH . '/vendor');
$app = new Yaf_Application(ROOT_PATH . "/conf/application.ini");
// $app->bootstrap()->run();
$app->getDispatcher()->dispatch(new Yaf_Request_Simple("index", "Admin", "Cli"));
?>
通常website下执行
$app->bootstrap()->run();
而在cli下,可以自定义执行某个action,因此可以改成
$app->getDispatcher()->dispatch(new Yaf_Request_Simple("index", "Admin", "Cli"));
但是这样做有个问题,如果有些初始化操作是在bootstrap中执行的,则直接调用
$app->getDispatcher()->dispatch(new Yaf_Request_Simple("index", "Admin", "Cli"));
会导致一些类库没有引入等问题,导致cli的执行环境跟website不一致,很可能导致cli执行错误。为了避免这个问题,我们还是执行
$app->bootstrap()->run();
默认情况下,bootstrap执行完后,会执行默认module下的indexController的indexAction。我们在indexAction这里处理
<?php
class IndexController extends Controller {
/**
* 默认动作
*/
public function indexAction() {
if (!empty($_SERVER['argv']) && $_SERVER['argv'][1] == 'cli') {
$this->runCli();
exit;
}
redirect("/xxx/index");
return false;
}
protected function runCli() {
echo datetime() . "------ START CRON JOB -----" . PHP_EOL;
D("xxx")->cliTask();
echo datetime() . "------ END CRON JOB -----" . PHP_EOL;
return false;
}
}
当第二个参数是cli时,我们执行cli命令,否则跳转到website默认页面
我们可以将执行命令写入cli.sh文件,放在/public/index.php同层目录下
#!/bin/bash
filepath=$(cd "$(dirname "$0")"; pwd)
cd $filepath
logname="cli_"$(date +%Y%m%d);
su www-data -c "php index.php cli 1>>../application/log/cli/$logname.log 2>&1"
然后再系统中添加cronjob,定义一个周期执行一次。
也可以手动执行,查看运行情况,内容会输出到../application/log/cli/$logname.log
sh cli.sh
添加定时任务,请查看本博客
http://lhdst-163-com.iteye.com/blog/1797038
分享到:
相关推荐
web在线管理计划任务,主要功能管理计划任务列表,添加用户,查看任务日志,任务异常报警提醒;使用workerman的计时器执行计划任务:任务循环执行,只执行一次,每天执行一次三种模式,最小间隔时间精确到1秒。...
安装说明: 把php_yaf.dll放置于phpstudy小皮面板PHP路径下。 例如D:\phpstudy_pro\Extensions\php\php7.3.4nts\ext 在小皮面板,网站—管理—php扩展—选择yaf 或者在php.ini手动加上extension=yaf
Yaf现在在国外已经被很多人关注, Zend Framework的作者在twitter上也推荐了Yaf。 google、百度、facebook都在用YAF。 Yaf的优点: 1. 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 2. 所有...
YAF的hello实例 你懂的 还有yaf的php5.4 dll
在windows下安装好yaf框架后,但是通过命令行yaf_cg生成项目文件失败,所在在这提供一个空的yaf项目文件,下载后直接放在根目录下再就可以localhost/项目名进行访问了
php7.2 yaf拓展,亲测可用。。。。。。。win10系统64位
基于php扩展的微型框架yaf,只有部分功能总结,不太完善
yaf 框架的pdo 类
PHP yaf 框架 整合示例 model action library 路由 参数验证插件
使用yaf写的实例程序,实现了login功能,帮助更快的入手yaf框架
yaf学习文档整理ppt 关于yaf的运行过程
YAF 用户手册
YAF1.9.3 asp.net轻量级论坛YAF1.9.3 asp.net轻量级论坛YAF1.9.3 asp.net轻量级论坛YAF1.9.3 asp.net轻量级论坛
yaf api文档分chm格式和网页两种格式。
yaf使用开发项目
yaf demo 学习实例,很不错的一个
swoole-yaf, 结合swoole扩展和Yaf框架,使用swoole的内置http_server
Yaf可测试骨架和composer支持
linux下,php5.4,yaf扩展包
一个.Net开源论坛,发展到现在的3.0版本,已经是比较成熟,更主要的是代码为完全开源,方便自己根据需要进行修改。