`
flex_莫冲
  • 浏览: 1090245 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

YAF添加CLI定时任务

    博客分类:
  • yaf
阅读更多
首先保证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
分享到:
评论

相关推荐

    scheduledTask-workerman:基于workerman和yaf开发的计划任务系统

    web在线管理计划任务,主要功能管理计划任务列表,添加用户,查看任务日志,任务异常报警提醒;使用workerman的计时器执行计划任务:任务循环执行,只执行一次,每天执行一次三种模式,最小间隔时间精确到1秒。...

    ubuntu下安装yaf框架

    在Ubuntu操作系统中安装Yaf(Yet Another Framework)框架是一个常见的任务,尤其对于那些热衷于PHP开发并寻求高性能、轻量级解决方案的开发者而言。Yaf是由C语言编写的,直接与PHP内核交互,因此它能提供更快的执行...

    yaf框架.doc

    安装完成后,需手动在`php.ini`中添加`extension=yaf.so`,以加载Yaf扩展。 #### 2. PECL安装 使用PECL命令进行安装更为简便,它会自动配置`php.ini`: ```bash $ pecl install yaf ``` 安装成功后,可以通过`...

    php扩展yaf 3.3.3 for Windows-php7.3-php8.0-7.4.zip

    在php.ini文件中添加以下行: ```ini extension=php_yaf.dll ``` 确保该行没有被注释掉,并保存并重启你的Web服务器,如Apache或Nginx,使配置生效。 四、使用Yaf 1. 创建入口文件:Yaf要求有一个单一的入口文件,...

    php框架yaf文件php_yaf.dll

    Yaf框架的核心特性包括MVC设计模式、路由系统、自动加载、插件机制等。其中,MVC模式将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,使得业务逻辑、数据处理和用户界面得以分离,提高...

    yaf框架扩展

    确保你的php.ini文件中已经添加了`extension=php_yaf.dll`这一行,然后重启服务器使更改生效。 3. **CREDITS文件** 这个文件通常包含关于项目贡献者、开发者和其他相关人员的信息。通过查看此文件,你可以了解到...

    yaf 学习demo

    通常可以通过`pecl`命令来安装,或者在编译PHP时手动添加`--enable-yaf`选项。安装完成后,需要在php.ini文件中启用Yaf扩展,并设置相关配置,例如: ```ini [yaf] yaf.environ = "product" # 设置运行环境,如开发...

    yaf空项目文件

    **Yaf框架详解** Yaf,全称Yet Another Framework,是由C语言编写的高性能、轻量级的PHP应用框架。它的设计目标是提供快速、稳定且易于扩展的应用程序开发环境。Yaf框架充分利用了PHP的C扩展特性,使得在处理高并发...

    yaf-2.1.17.tgz

    8. 更新php.ini文件,添加`extension=yaf.so`行,然后重启PHP服务使改动生效。 在Linux环境中,正确配置和安装这些依赖对于成功运行基于Yaf的PHP应用至关重要。了解和熟悉这些步骤,对于管理和维护Linux服务器上的...

    YAF开源论坛3.0

    开发者可以通过修改这些源代码来定制论坛的功能,例如改变界面布局、添加新的功能模块,甚至调整错误处理策略,以满足特定社区的需求。对于.NET开发者来说,这是一个极好的学习和实践平台,同时也为那些希望拥有自主...

    YAF简单实例你懂的

    在标题 "YAF简单实例你懂的" 中,我们看到这是一个关于 YAF 框架的基本示例教程。通常,这样的实例会涵盖如何创建一个简单的 "Hello, World!" 应用来帮助初学者了解 YAF 的基本使用方法。下面我们将深入探讨 YAF 的...

    PHP yaf 框架封装示例

    本示例将详细介绍如何在Yaf框架下进行封装,包括Model、Action、Library以及路由和参数验证插件的整合。 一、Yaf框架简介 Yaf是C语言编写,直接与PHP底层交互,因此其性能表现优秀。它支持MVC模式,提供自动加载、...

    php_yaf扩展包

    - 在`php.ini`配置文件中添加`extension=php_yaf.dll`(根据实际使用的文件名)。 - 重启Web服务器使配置生效。 - 配置YAF相关参数,如`yaf.environ`定义运行环境,`yaf.name_separator`设置控制器和动作间的分隔...

    yaf扩展smarty模板

    这可能涉及到对Yaf框架本身的理解,以及如何在Yaf的结构中引入并配置Smarty,包括注册 Smarty 为 Yaf 的视图引擎,设置模板目录,编译目录等。描述中的“之前在官网看到的方法有一点问题,可能是没更新吧”,暗示了...

    php7.3.4可用yaf扩展下载phpstudy小皮面板php_yaf.dll(亲测100%可用)

    安装说明: 把php_yaf.dll放置于phpstudy小皮面板PHP路径下。 例如D:\phpstudy_pro\Extensions\php\php7.3.4nts\ext 在小皮面板,网站—管理—php扩展—选择yaf 或者在php.ini手动加上extension=yaf

    yaf-2.3.1.tgz

    在“yaf-2.3.1.tgz”压缩包中,这个文件用于指导整个扩展的编译和安装过程。通过解析和执行“package.xml”,我们可以知道Yaf扩展的版本、作者、版权信息,以及它需要的其他PHP组件或库。 接下来,我们进入实际的...

    php5 php_yaf_2.2.9 nts vc11 x86

    标题 "php5 php_yaf_2.2.9 nts vc11 x86" 提供的信息主要关于一个特定...添加到 PHP 的扩展目录并配置 `php.ini` 文件来启用 YAF 功能,同时 `LICENSE` 文件确保合法使用,而 `php_yaf.pdb` 则提供了调试时的辅助信息。

    YAF框架使用说明

    Yaf现在在国外已经被很多人关注, Zend Framework的作者在twitter上也推荐了Yaf。 google、百度、facebook都在用YAF。 Yaf的优点: 1. 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 2. 所有...

    centos6.0配置lamp+yaf环境配置

    - 创建一个PHP项目,在`/etc/php.d`目录下创建`yaf.ini`文件,添加配置项`extension=yaf.so`。 - 重启Apache服务以加载新的PHP扩展:`service httpd restart`。 3. **编写Yaf应用**: - 在`/var/www/html`下创建...

    PHP框架YAF的sample

    3. **动手实践**:尝试修改Sample中的代码,比如添加新的控制器或更改路由规则,观察运行结果。 4. **阅读源码**:查看YAF框架的源码,了解其内部实现机制,这对于深入学习非常有帮助。 5. **结合其他服务**:结合...

Global site tag (gtag.js) - Google Analytics