xutongle

xutongle

这家伙有点懒,还没写个性签名!

  • 财富值660
  • 威望值60
  • 总积分1720

个人信息

  • 2018-07-04 已签到
    连续签到1天,获得了5个金钱
  • 发表了说说
    YII 这是废了 Laravel都更了5-6个大版本了,YII毛都没
  • 回复了 的评论

    我可没资格嘲笑别人哦. 因为每个人的想法都不同,需求也不同.我可以简单说下我这种方式的优点

    1. 可以支持可视化定时任务管理
    2. 灵活的时间时间控制,支持较为复杂的定时任务需求(兼容crontab语法)
    3. 多个任务,同一时间会并发执行,不会出现串行阻塞(使用的proc_open这个函数来创建子进程,实现并发,跨平台)

    说一下我对你的这种实现方式的看法(疑问)

    发现你貌似使用的是YII自带的Event类,做定时任务,我阅读的一下trigger这个源代码发现最终触发的是call_user_func这个函数.这样就意味着.你这种实现方式, 假设多个定时任务同一时间执行就会变成串行阻塞, 就是后面的任务要等前面的任务执行完毕才执行~ 这样是否会有问题,是否满足你的需求呢? 看你自己了

    我这个想法比较简单,预定义几个执行时间,然后配置文件一写,执行确实是串行的。

  • 滑动验证,在网页被缩放到非默认100%,错位,然后验证失败

  • 回复了 的评论

    可以考虑按照PHPCMS的设计思路,在数据库里保存URI,然后你就知道HTML放哪里了,更新的时候删除这个HTML文件即可。

    补充一下,生成HTML你需要把HTML中跟用户状态相关的都用JS或者AJAX调用。

  • 可以考虑按照PHPCMS的设计思路,在数据库里保存URI,然后你就知道HTML放哪里了,更新的时候删除这个HTML文件即可。

  • 回复了 的评论

    这么干会不会被嘲笑

    /**
     * Class CronController
     *
     * 0/5 * * * * /path/to/yii task/minute >/dev/null 2>&1
     * 30 * * * * /path/to/yii task/hourly >/dev/null 2>&1
     * 00 18 * * * /path/to/yii task/daily >/dev/null 2>&1
     * 00 00 15 * * /path/to/yii task/month >/dev/null 2>&1
     *
     * @author Tongle Xu <xutongle@gmail.com>
     * @since 3.0
     */
    class TaskController extends Controller
    {
        /**
         * @event Event 每分钟触发事件
         */
        const EVENT_ON_MINUTE_RUN = "minute";
    
        /**
         * @event Event 每小时触发事件
         */
        const EVENT_ON_HOURLY_RUN = "hourly";
    
        /**
         * @event Event 每天触发事件
         */
        const EVENT_ON_DAILY_RUN = "daily";
    
        /**
         * @event Event 每月触发事件
         */
        const EVENT_ON_MONTH_RUN = "month";
    
        /**
         * @var string
         */
        protected $dateTime;
    
        /**
         * @var string 任务配置文件
         */
        public $taskFile = '@vendor/yuncms/tasks.php';
    
        /**
         * @throws \yii\base\InvalidConfigException
         */
        public function init()
        {
            parent::init();
            $this->dateTime = Yii::$app->formatter->asDatetime(time());
            $this->taskFile = Yii::getAlias($this->taskFile);
        }
    
        /**
         * 初始化并注册计划任务
         */
        public function initTask()
        {
            if (is_file($this->taskFile)) {
                $tasks = require $this->taskFile;
                foreach ($tasks as $task) {
                    if (isset($task['class'])) {
                        Event::on($task['class'], $task['event'], $task['callback']);
                    } else {
                        Event::on($task[0], $task[1], $task[2]);
                    }
                }
            }
        }
         }
    
    /**
         * Executes minute cron tasks.
         * @return int
         */
        public function actionMinute()
        {
            $this->stdout($this->dateTime . " Executing minute tasks." . PHP_EOL, Console::FG_YELLOW);
            $this->trigger(self::EVENT_ON_MINUTE_RUN);
            return ExitCode::OK;
        }
    
  • 这么干会不会被嘲笑

    /**
     * Class CronController
     *
     * 0/5 * * * * /path/to/yii task/minute >/dev/null 2>&1
     * 30 * * * * /path/to/yii task/hourly >/dev/null 2>&1
     * 00 18 * * * /path/to/yii task/daily >/dev/null 2>&1
     * 00 00 15 * * /path/to/yii task/month >/dev/null 2>&1
     *
     * @author Tongle Xu <xutongle@gmail.com>
     * @since 3.0
     */
    class TaskController extends Controller
    {
        /**
         * @event Event 每分钟触发事件
         */
        const EVENT_ON_MINUTE_RUN = "minute";
    
        /**
         * @event Event 每小时触发事件
         */
        const EVENT_ON_HOURLY_RUN = "hourly";
    
        /**
         * @event Event 每天触发事件
         */
        const EVENT_ON_DAILY_RUN = "daily";
    
        /**
         * @event Event 每月触发事件
         */
        const EVENT_ON_MONTH_RUN = "month";
    
        /**
         * @var string
         */
        protected $dateTime;
    
        /**
         * @var string 任务配置文件
         */
        public $taskFile = '@vendor/yuncms/tasks.php';
    
        /**
         * @throws \yii\base\InvalidConfigException
         */
        public function init()
        {
            parent::init();
            $this->dateTime = Yii::$app->formatter->asDatetime(time());
            $this->taskFile = Yii::getAlias($this->taskFile);
        }
    
        /**
         * 初始化并注册计划任务
         */
        public function initTask()
        {
            if (is_file($this->taskFile)) {
                $tasks = require $this->taskFile;
                foreach ($tasks as $task) {
                    if (isset($task['class'])) {
                        Event::on($task['class'], $task['event'], $task['callback']);
                    } else {
                        Event::on($task[0], $task[1], $task[2]);
                    }
                }
            }
        }
         }
    
  • 你可以在你当前项目的 composer.json 加上

    "provide": {
        "bower-asset/jquery": "3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
        "bower-asset/inputmask": "~3.2.2 | ~3.3.5",
        "bower-asset/punycode": "1.3.*",
        "bower-asset/yii2-pjax": "~2.0.1",
        "bower-asset/font-awesome": "4.7.*@stable",
        "bower-asset/jquery-ui": "~1.12.1"
      },
    

    忽略掉框架给你安装的这些第三方脚本。
    然后在当前项目的目录用npm安装依赖打包即可

  • 总觉得跟swoole整合 怎么弄不不太优雅。按理说 app入口应该类似、\yii\web\Application 一样单起个入口,来跑服务,但是Yii的单例又污染了一些变量和组件。需要大改。。。

经理 等级规则
1720/2000
资料完整度
40/100
用户活跃度
0/100

Ta的关注

6

Ta的粉丝

16

Ta的访客

109