【问题标题】:How to set cron job url for codeigniter?如何为codeigniter设置cron作业url?
【发布时间】:2013-10-16 15:59:54
【问题描述】:

我正在为我的网站使用 Codeigniter。我必须使用 cron 作业来运行控制器功能之一。我在网站上使用路由。而且我没有在 url 中使用 index.php。

例如http://my-domain.com/welcome/show,这里 Welcome 是我的控制器,show 是该控制器的函数名称。

我是这样用的,

0 * * * * php /home/username/public_html/welcome/show

它给出'没有这样的目录'

如何在 CPANEL 中为上述 url 设置 cron jon。

谢谢。

【问题讨论】:

    标签: php codeigniter cron


    【解决方案1】:
    * * * * * php index.php controllername functionname
    

    第一个 * - 分钟, 第二个 * - 小时, 第三个 * - 一个月中的一天, 第 4 个 * - 月, 第 5 个 * - 星期几。

    欲了解更多信息,请访问:https://crontab.guru/

    【讨论】:

      【解决方案2】:

      用途:

      php index.php welcome show
      

      作为 crontab 中的命令。例如:

      0 * * * * php /home/username/index.php welcome show
      

      来源(2.2.0 版) http://www.codeigniter.com/userguide2/general/cli.html

      来源(版本 3.*) http://www.codeigniter.com/user_guide/general/cli.html

      来源(版本 4.*) http://codeigniter.com/user_guide/cli/cli.html

      【讨论】:

      • 谢谢,我用过这个,但它会加载默认控制器。
      • 您使用的是最新版本的 CI 吗?
      • @Sachin try /usr/local/bin/php /home/user/index.php 欢迎节目 技巧在于加载与常规 /usr/bin/php 不同的 php 安装
      • 我的机器上没有/usr/local/bin/php
      • excelente,在我的例子中是 php /home/myusername/domains/example.com/public_html/index.php tasks inserttest
      【解决方案3】:

      我正在使用 hostgator 的 cpanel。
      我在用户控制器中创建了一个用户控制器和“run_cron_data”函数。
      命令:wget www.your_site_url.com/index.php/user/run_cron_data

      请看下面的截图

      【讨论】:

        【解决方案4】:

        如果您使用的是 Hostgator(或任何其他 Linux 服务器),请尝试这个。

        /opt/cpanel/ea-php72/root/usr/bin/php /YOUR_HOME_DIRECTORY/YOUR_USERNAME/public_html/marketing/index.php welcome emailcampaign 1
        

        例如对我来说

        /opt/cpanel/ea-php72/root/usr/bin/php /home3/adnan/public_html/index.php welcome emailcampaign 101
        

        在哪里

        welcome is the controller name
        emailcampaign is the function name of welcome controller
        101 = First argument of url.  
        

        【讨论】:

          【解决方案5】:

          使用此过程通过 cPanel 设置 cron 作业:

          1. 登录到您的 cPanel 界面。
          2. 转到“高级”部分。
          3. 点击“Cron 作业”。
          4. 从提供的列表中选择具体时间。
          5. 您应该在“命令”字段中输入要运行的命令。

          【讨论】:

            【解决方案6】:

            如果您使用的是 cPanel,请使用以下命令:

            /usr/bin/curl -k http://my-domain.com/welcome/show
            

            这对我来说非常适合。

            【讨论】:

              【解决方案7】:

              在 Linux EC2 实例上,这有效:

              */5 * * * * /usr/bin/php /var/www/html/cifolder/index.php [module] [function]
              

              【讨论】:

                【解决方案8】:
                watch -n60 curl [your application path]/check_banalce/user_balance
                

                在我的情况下,我使用 codeigniter,上面的命令每 60 秒执行一次在 check_balance 控制器中找到的 user_balance 函数。

                【讨论】:

                  【解决方案9】:

                  我使用的是 codeigniter 3.0.3,我的服务器是 hostgator。对我来说,以下格式工作正常

                  */15 * * * * /opt/php55/bin/php /home/username/public_html/myapp/index.php reminders index
                  

                  上述命令每15分钟运行一次,命令中的提醒是控制器名称,索引是方法名称。

                  【讨论】:

                  • @sachin 你可以试试0 * * * * php /home/username/public_html/yourapp/index.php welcome show
                  【解决方案10】:

                  我已经做到了

                   00 09-18 * * 1-5 /usr/bin/php /var/www/html/app/index.php crontest
                  

                  crontest 是控制器的名称,它也使用模型从数据库中提取数据并定期发送邮件(每周一至周五上午 9 点至下午 6 点)

                  我刚刚查看了this page,它通过示例进行了非常详细的解释。希望这对其他人也有用。

                  【讨论】:

                  • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
                  【解决方案11】:

                  这是我使用的 cron

                  /usr/bin/php /home/pia/www/jobs/index.php cron 时事通讯

                  解释:

                  a) $_SERVER['DOCUMENT_ROOT'] = /home/pia/www

                  b) codeigniter 网站根目录 = /home/pia/www/jobs

                  c) 'cron' = 控制器名称

                  d) 'newsletter' = 方法名称

                  【讨论】:

                  • 嗨,这是什么工具?
                  【解决方案12】:

                  /usr/local/bin/php /home/username/public_html/index.php 控制器名方法名

                  这对我有用。

                  【讨论】:

                  • 感谢您的解决方案!如果我在我的应用程序中有登录名,这个解决方案只是一个简单的问题,它会询问为什么以及如何避免它? @Reshma D
                  【解决方案13】:

                  我在cron下面用过

                  php /full-path-to-cron-file/cron.php /test/index
                  

                  来源:http://www.asim.pk/2009/05/14/creating-and-installing-crontabs-using-codeigniter/

                  这对我有用。

                  谢谢大家

                  【讨论】:

                    【解决方案14】:

                    你也可以试试:

                    0 * * * * /usr/bin/curl --silent --compressed http://my-domain.com/welcome/show
                    

                    或本地主机

                    0 * * * * /usr/bin/curl --silent --compressed http://localhost/welcome/show
                    

                    希望对你有帮助。

                    【讨论】:

                    • 你能解释一下吗
                    【解决方案15】:

                    你可以试试这个:

                    wget api.example.com/index.php/controller/function
                    

                    【讨论】:

                    • 谢谢回复,意思是我的例子中的url是0 * * * * wget http://my-domain.com/welcome/show,对吗?
                    • 我觉得可以,你可以试试这个
                    • 谢谢 Suvash.. 这个网址对我有用。 wget yourSite.com/index.php/controller/method
                    • 我每分钟设置 2 个 cron,这些会创建许多 tmp 文件。
                    • 小心如果你正在使用它,因为基本上wget正在下载一个网站作为一个文件,所以你的服务器会有很多文件。例如,我运行了 2 次 wget localhost/my_controller/auth,然后我用 [root@myserver bin]# ls -l | grep auth 命令检查,我有 2 个文件:-rw-r--r-- 1 root root 57 Feb 27 07:53 auth-rw-r--r-- 1 root root 57 Feb 27 07:53 auth.1