`
275553385
  • 浏览: 724616 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

ecstore定时任务

阅读更多

ecstore crontab配置

  1. 默认的实现机制
    Ecstore是通过js每30秒调用定时分配脚本,但这个仅限于网店后台登陆状态下。
    
  2. 改善方案
    通过操作系统层面的crontab定时去调用Ecstore本身的定时分配机制
    
  3. 实现步骤
  • 关闭原系统调用机制

    在config.php中添加如下代码

    define('SYSTEM_CRONTAB',true);
    
  • 通过服务器上[crontab http://crontab.org/ ]定时调用crontab [http://wiki.dreamhost.com/Crontab ]定时任务的添加,首先执行如下命令
    crontab -e
    
    接着在打开的文件中输入如下代码:
    */5 * * * *  "项目目录"/app/base/cmd crontab &
    * * * * * "项目目录"/app/base/cmd base:queue flush  &
    
    注意:php的路径如果不是 ”/usr/bin/php “,  “项目目录”前面必须加上php的执行文件目录
    
    
    提示:
    以上的代码所表述的内容是:每5分钟调用一次分配脚本
    建议crontab 每5分钟调用一次,如果数据量比较大,可以放在凌晨调用脚本
    例如:每天凌晨0点到4点每30分钟调用一次脚本,代码如下
    30 0-4 * * * /data/www/ecstore/src/app/base/cmd crontab &
    * * * * * /data/httpd/app/base/cmd base:queue flush  &
    
    最后保存,并输入以下命令重启cron
    service crond restart
分享到:
评论
1 楼 275553385 2013-12-26  
   大访问量下,session数据会大量产生。使用ecstore本身自带的清除命令:kvdelexpires + linux crontab 能够起到清除kvstore垃圾数据的作用。但是会造成数据库压力增加,下面我们会提供一个更为优化的替换方案。
   风险提示:该方案可能造成的问题:
    1、优化实施过程中会造成用户登陆失效、加入购物车失效等与session相关的问题。(所以建议该方案要么在网站无访问过程中实施,要么直接将网站挂出“网站正在维护中”的状态再做优化。)
    2、由于该方案涉及ecstore运行所依赖的kvstore数据,虽然我们对该方案做了测试,但是还是强烈建议做该优化前对整站备份(代码+数据库)
   该方案思路:
     删除sessions数据,然后给mongodb数据库加入字段: expire 用于计算sessions和其他kvstore数据的过期时间(需要执行kvrecovery将该字段加入mongodb库中)。对kvdelexpires进行改造,放弃原先需要遍历mysql中base_kvstore表的思路。直接对比mongodb中expire字段的过期时间删除mongodb中的过期kvstore数据。
  下面我们来看具体实施步骤:
  1、步骤一(删除所有session数据,可能造成用户掉线,建议无访问时执行):
    mysql:
    delete from sdb_base_kvstore where prefix='sessions';
    mongodb:
    use ecos  //换成自己使用的库名称
    db.defalut.remove({prefix:'sessions'})
  2、步骤二(修改文件,主要是针对mongodb增加了expire字段、同时修改了过期数据清理机制)
    app/base/lib/kvstore.php:
    static public function delete_expire_data()
    {
        $time = time();
        $kv_obj = base_kvstore::instance()->get_controller('');
         if(method_exists($kv_obj, 'delete_expire_data'))
            $kv_obj->delete_expire_data();
         kernel::database()->exec('DELETE FROM sdb_base_kvstore WHERE ttl>0 AND (dateline+ttl)<'.$time, true);
    }
     app/base/lib/kvstore/mongodb.php:
    //替换原有函数
    public function store($key, $value, $ttl=0)
    {
       $store['value'] = $value; $store['dateline'] = time();
       $store['ttl'] = $ttl; $store['key'] = $this->create_key($key);
       $store['prefix'] = $this->prefix;
       $store['expire'] = $store['dateline'] + $store['ttl'];  //增加字段
       $res = self::$_mongodb->update(array('key'=>$store['key']), $store, array("upsert" => true));
       return $res;
     }//End Function

    //替换原有函数
    public function recovery($record)
    {
        $key = $record['key'];
        $store['key'] = $this->create_key($key);
        $store['value'] = $record['value'];
        $store['dateline'] = $record['dateline'];
        $store['ttl'] = $record['ttl'];
        $store['expire'] = $store['dateline'] + $store['ttl']; //增加字段
        $res = self::$_mongodb->update(array('key'=>$store['key']), $store, array("upsert" => true));
        return $res;
    }//End Function

    //新增函数
    public function delete_expire_data()
    {
        return self::$_mongodb->remove(array('expire'=>array('$lt'=>time())));
    }
  3、步骤三(将mysql中的数据重新同步到mongodb,同时增加了expire字段):
      [ecstore_path]/app/base/cmd kvrecovery

  4、步骤四(增加索引):
    mysql :
    create index ind_ttl using btree on sdb_base_kvstore(ttl);
    mongo:
    db.defalut.ensureIndex({expire:1})
  5、重新将kvdelexpires加入crontab
     00 5 * * * [ecstore_path]/app/base/cmd kvdelexpires &

相关推荐

    ECStore2.3.8无加密

    ECStore是一款专业的电子商务平台软件,主要面向企业级用户,提供全方位的在线购物解决方案。"ECStore2.3.8无加密"表示这是一个未经过任何加密处理的版本,用户可以直接访问和使用其源代码,这对于开发者来说具有很...

    ecstore源码

    Ecstore是一款专业的电子商务平台源码,它为在线商家提供了一个完整的解决方案,涵盖了商品管理、订单处理、支付集成、会员系统、促销活动等多个方面。这款源码的可用性意味着你可以根据自己的需求进行定制和扩展,...

    ecstore2.3.9开源版

    8. `script`:可能包含了执行特定功能的脚本文件,如数据库操作、后台任务等。 在深入研究ecstore2.3.9之前,你需要仔细阅读`license.txt`以确保符合使用条件,并参考`readme.txt`了解安装和配置步骤。此外,可能还...

    ecstore架构之数据库(Ecstore数据库字典)

    ecstore架构之数据库,Ecstore 数据库字典。ecstore架构之数据库,Ecstore 数据库字典。

    ecstore 模板机制4

    ECstore是ShopEx旗下的一个电子商务解决方案品牌,提供网上商店构建所需的各项功能,其中模板机制是ECstore的特色功能之一,它允许用户通过设计模板来自定义商店的外观和布局。本文档主要介绍了在制作ECstore模板时...

    Ecstore 最新开发手册2016版本

    Ecstore 2016年最新的开发手册资料, chm版本。

    Ecstore2.0数据库词典

    Ecstore 2.0 数据库词典 是 数据库相关的表设计说明文档

    ShopEX ECstore V2.3.8完整源码,亲测

    ShopEX ECstore V2.3.8是一款由商派(ShopEx)开发的B2C电子商务平台,专门针对在线零售业务。此版本是该系统的一个重要里程碑,它提供了丰富的功能和优化的性能,旨在帮助商家建立高效、稳定且用户体验优秀的网上...

    ecstore文档开发

    ### ecstore文档开发知识点 #### 一、ecstore二次开发概览 在进行ecstore的二次开发时,主要涉及到了一个关键工具——`modie`。`modie`是一种简化了二次开发流程的工具,它使得开发者能够更快地对ecstore进行定制...

    ECStore_jb51.rar

    在本文中,我们将深入探讨ECStore 2.3.8版本的相关知识点,以及如何进行二次开发。 首先,让我们了解一下ECStore的核心特性。ECStore是一款高度可定制的开源电子商务平台,它提供了商品管理、订单处理、库存控制、...

    ecstore2.3.8

    "ecstore2.3.8" 是ShopEX公司推出的一款基于B2C模式的电子商务系统,版本号为2.3.8。ShopEX是中国知名的电商软件和服务提供商,其产品广泛应用于各类在线零售业务。ECstore是他们精心打造的电商解决方案,旨在为企业...

    Ecstore2.3数据库字典

    Ecstore2.3 数据库字典,二次开发的必备资料

    ecstore蓝色模板

    【ecstore蓝色模板】是一款专为电子商务平台设计的模板,主要应用于海豚村等免费电商平台。这个模板以其独特的蓝色调为主题,旨在提供一种清新、专业且用户友好的购物体验。ecstore作为一款强大的电子商务系统,它...

    ecstore2.4源码

    ECStore是上海商派(ShopEx)公司推出的一款专业级的B2C电子商务平台源码,主要用于构建在线零售商店。这个2.4版本是ECStore的一个特定迭代,它提供了更加强大、稳定和灵活的电商解决方案。在了解ECStore 2.4的知识...

    商派ECStore2.3.8.源码

    "商派ECStore2.3.8.源码"是一个基于电子商务领域的开源软件,由知名的电商解决方案提供商——商派(ShopEx)开发。这个版本的ECStore是专门为在线零售业务设计的,它提供了完整的电子商务功能,包括商品管理、订单...

    ECstore企业版操作手册v2.1

    ECstore企业版操作手册详细介绍了上海商派网络科技有限公司开发的ECstore企业版电商平台的安装、配置和管理方法,内容涵盖了系统安装、商店配置、支付方式设置、配送管理、站点维护、营销推广和会员管理等多个方面。...

    ShopEX商派ECstore在线零售系统 ecstore-2.1.1(zend加密版代码)

    ShopEX商派ECstore在线零售系统 ecstore-2.1.1(zend加密版代码). 本人亲自测试可用,也把教程放在文件夹里,我也是测试了很久才成功的,方法在文件注释里。php环境自己搭配,只能用php5.3n 或 以上的注意要有n...

    ecstore 模板机制

    作业环节通常会给出一系列问题或任务,用于巩固和实践前面课程内容。例如,要求学生了解EcStore本地安装环境的需求,查询某个网址使用的是哪个版本的ShopEx,以及如何关闭系统缓存、清除模板前台缓存,还会要求学生...

    ecstore2.3.9全功能最新破解版

    独家出售:商派Shopex ecstore2.3系列全开源,无任何加密,可以不用安装zend 解压即可安装,百分百原滋原味官方原版源码,无任何加密。 支持pc版,触屏版,手机版。 安装环境:PHP5.3+MYSQL 推荐LINUX环境 LAMP ...

Global site tag (gtag.js) - Google Analytics