`
zwws
  • 浏览: 2240 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

守护进程删除smarty的缓存文件(注释版)

阅读更多

原文: 鸭嘴的Blog

偶参阅了网上资料加了注释.

 

<?php
 
define("PID_PATH", "/tmp/delSmartyCache.pid");

global $argv;
$cmd = $argv[1];
 
switch($cmd) {
    case 'start' :
        do_work();
        break;
    case 'stop' :
        do_stop();
        break;
    case 'status' :
        show_status();
        break;
    default :
        show_usage();
        break;
}

function do_work()
{
    // 创建子进程(守护进程)
    $newid = pcntl_fork();
    if ($newid == -1) {
        echo "pcntl_fork error\n";
        exit;
    }
    if ($newid) { // 返回值大于0, 表示创建成功, 提示信息并结束父进程
        echo "process delSmartyCache start successfully\n";
        exit;
    } else { // 返回值为0, 表示父进程结束后进入子进程的运行阶段
        // 取当前进程(子进程)的PID, 并写至进程文件
        $pid = posix_getpid();
        $fp = fopen(PID_PATH, "w");
        fwrite($fp, $pid);
        fclose($fp);
        while (true) {
            $cmd = "rm -rf /elink/bbs_data/smarty/tmpl_c/*";
            $re = popen("$cmd", "r"); // 打开一个指向删除进程的管道
            $ret = fread($re, 1024);
            if ($ret != "") {
                // 将执行情况写入日志
                $fp = fopen("/home/dexin/run_delSmartyCache.log","a+");
                fwrite($fp, $ret);
                fclose($fp);
            }
            // 延时6秒
            sleep(6);
        }
    }
}

// 停止守护进程
function do_stop()
{
    if (file_exists(PID_PATH)) {
        // 读取守护进程PID
        $fp = fopen(PID_PATH, "r");
        $pid = fread($fp, 10);
        // 退出守护进程
        $ret = posix_kill($pid, SIGQUIT);
        if ($ret === true) {
            echo "process delSmartyCache stopped successfully\n";
        } else {
            echo "fail stop process delSmartyCache\n";
        }
    } else {
        echo "process delSmartyCache not found\n";
    }
}

// 使用说明
function show_usage()
{
    print
<<<EOF
Usage:
    php delSmartyCache.php <option>

Options:
    start - Start the daemon
    stop - Stop daemon
    status - show the delSmartyCache daemon
    help - Show help
EOF;
}

// 显示状态
function show_status()
{
    if (file_exists(PID_PATH)) {
        $fp = fopen(PID_PATH, 'r');
        $pid = fread($fp, 10);
        $ret = posix_kill($pid, 0); // 发送信号判断进程是否存活
        if($ret === true) {
            echo "process delSmartyCache is alive\n";
            exit;
        } else {
            echo "process delSmartyCache is down\nplease start the process\n";
            exit;
        }
    } else {
        echo "pid file not exists\n";
        exit;
    }
}
分享到:
评论

相关推荐

    (第30讲) PHP模板引擎Smarty缓存应用

    使用Smarty缓存时,只需在模板文件中添加`{cache}`标签,例如`{cache id='uniqueCacheId'}...{/cache}`,其中的`id`用于唯一标识缓存。缓存内容会自动保存,并在下一次请求时直接使用,无需重新生成。清除缓存可以...

    smarty两种局部缓存方法和自定义生成静态文件的例子

    以上就是Smarty 2.6.26版本中的局部缓存方法和自定义生成静态文件的实践。通过合理使用这些功能,可以显著提升网站的性能和用户体验。但需要注意,缓存策略应根据具体应用和数据更新频率来调整,以确保数据的实时性...

    SMarty 3 文件包

    这个"Smarty 3 文件包"包含了用于搭建和运行Smarty 3环境的所有必要组件。 Smarty 3 的核心特性包括: 1. **模板和PHP分离**:Smarty 的设计原则是让开发者专注于PHP代码处理数据,而设计师则可以使用HTML、CSS和...

    PHP100视频教程 30:PHP模板引擎Smarty缓存应用

    1、Smarty缓存的配置 $smarty-&gt;cache_dir = "/caches/"; //缓存目录 $smarty-&gt;caching = true; //开启缓存,为flase的时侯缓存无效 $smarty-&gt;cache_lifetime = 60; //缓存时间2、Smarty缓存的使用和清除 $...

    smarty缓存部分参考

    ### Smarty缓存部分参考知识点 #### 一、使用缓存 在使用Smarty模板引擎时,启用缓存功能是一项重要的优化措施。为了启动缓存机制,首先需要设置`$smarty-&gt;caching = true;`,这将告诉Smarty是否开启缓存功能。...

    PHP100视频教程 30:PHP模板引擎Smarty缓存应用.rar

    软件介绍 1、Smarty缓存的配置  $smarty-&gt;cache_dir = "/caches/"; //缓存目录  $smarty-&gt;caching = true; //开启缓存,为flase的时侯缓存无效  $smarty-&gt;cache_lifetime = 60; //缓存时间 2、Smarty缓存的...

    smarty缓存用法分析

    SMARTY提供了clearCache方法用于删除特定的缓存实例。如果不提供特定的模板文件名和参数,那么将清除整个缓存目录下的所有缓存文件。示例代码如下: ```php $Smarty-&gt;clearCache('01.html', $goods_id) ``` 有时候在...

    PHP100视频教程30:PHP模板引擎Smarty缓存应用.rar

    描述中的“.rar”文件可能包含了PPT演示文稿和视频教程,其中`第30讲.ppt`可能是关于Smarty缓存的详细讲解,包括原理、配置、使用方法和最佳实践;`php100-30.wmv`则可能是一个视频教程,通过实例演示如何在实际项目...

    smarty最新手册 smarty中英文结合版

    Smarty的配置允许开发者自定义模板目录、编译目录、缓存策略等。例如,`$smarty-&gt;setTemplateDir('templates')`设置模板目录,`$smarty-&gt;setCompileDir('templates_c')`设置编译目录。 四、Smarty缓存 Smarty有内置...

    PHP模板引擎Smarty的缓存用法_.docx

    本文将详细介绍Smarty的缓存机制及其用法。 ### 一、开启和使用Smarty缓存 要启用Smarty的缓存功能,首先需要在初始化Smarty对象时设置相关参数。在配置文件或脚本中,可以这样设置: ```php $smarty = new ...

    php模版 smarty安装文件

    在这个案例中,你已经拥有名为"Smarty-3.0.7"的压缩文件,这应该包含所有必要的文件。 2. **解压并放置目录**:将下载的压缩包解压到你的PHP项目中。通常,人们会创建一个`libs`或者`vendors`目录,然后将Smarty的...

    php模板解析类文件缓存

    Smarty的缓存管理策略非常灵活,可以通过设置缓存生命周期(即缓存多久后失效)、缓存依赖(当关联的某些文件或数据改变时自动清除缓存)等来控制。此外,Smarty还支持缓存前/后处理器,允许在内容缓存生成前后执行...

    smarty模板文件更新

    smarty模板文件更新core.write_file.php文件,解决无法生成编译文件的问题

    smarty3.0,smarty最新版本

    6. **缓存机制**:Smarty提供了缓存功能,可以将渲染后的模板结果存储起来,避免每次请求都重新计算。这对于提升网站性能非常关键,特别是在数据不变但渲染过程较慢的情况下。 7. **预编译**:Smarty 3.0支持模板预...

    smarty开发手册html版本

    5. 缓存机制:Smarty允许对模板结果进行缓存,提高页面加载速度,但同时也提供了动态更新缓存的机制,以保持数据的实时性。 三、Smarty的配置和设置 在使用Smarty时,需要先实例化一个Smarty对象并进行配置。常见的...

    Smarty最新版下载自Smarty官网

    在下载并安装Smarty最新版后,开发者需要按照官方文档或示例代码进行配置,然后在PHP代码中实例化Smarty对象,加载模板文件,填充变量,并渲染输出。这样,就可以利用Smarty的强大功能,构建出高效、易维护的Web应用...

    Smarty模板引擎3.1.18版本

    3. **缓存机制**:Smarty具备强大的缓存功能,可以缓存编译后的模板,减少不必要的重复编译,提高网站的响应速度。开发者可以通过配置控制何时更新缓存。 4. **安全特性**:为了确保模板的安全性,Smarty提供了多种...

    smarty中文手册 双语版

    这个"Smarty中文手册 双语版"为开发者提供了详尽的参考信息,帮助理解和使用Smarty框架。 Smarty的核心概念包括以下几个方面: 1. **模板(Template)**:模板文件通常包含HTML,以及一些Smarty语法,如变量、控制...

    smarty文件包

    6. **配置管理**:Smarty允许开发者通过配置文件来设置各种参数,如模板目录、编译目录、缓存目录等,使得项目的配置更加灵活。 7. **安全控制**:为了防止模板被恶意篡改,Smarty提供了安全模式,可以限制模板中...

    Smarty_smarty_

    6. **配置文件**:配置文件用于设置Smarty的全局属性,如模板目录、编译目录等。配置可以通过`config_load`函数加载,并在模板中使用`{config_load}`访问配置变量。 7. **控制台调试**:Smarty提供了一套调试工具,...

Global site tag (gtag.js) - Google Analytics