让我的php脚本在访问URL时不运行,而是在通过Cron作业安排的时间运行

让我的php脚本在访问URL时不运行,而是在通过Cron作业安排的时间运行,php,cron,bluehost,Php,Cron,Bluehost,其他人也提出了类似的问题,但据我所知,他们的脚本是自动生成的,但当您访问www.mydomain.com/myscript.php时,脚本仍在运行 或者至少我在cpanel中为脚本设置cron作业时就是这样。是否有任何方法可以使脚本在我访问该URL时不运行,而是静态运行,除了计划的更新 我见过一些解决方案,其中脚本本身被编辑以检查它上次运行的时间,如果它是在不到X小时之前运行的,那么它将显示该日志文件。问题是我不知道在哪里可以找到那个日志文件。如果有必要的话,我正在使用BlueHost。在php

其他人也提出了类似的问题,但据我所知,他们的脚本是自动生成的,但当您访问www.mydomain.com/myscript.php时,脚本仍在运行

或者至少我在cpanel中为脚本设置cron作业时就是这样。是否有任何方法可以使脚本在我访问该URL时不运行,而是静态运行,除了计划的更新


我见过一些解决方案,其中脚本本身被编辑以检查它上次运行的时间,如果它是在不到X小时之前运行的,那么它将显示该日志文件。问题是我不知道在哪里可以找到那个日志文件。如果有必要的话,我正在使用BlueHost。

在php脚本开始执行您的内容之前,您可以在其顶部添加类似if$argv[1]==“RUN”的内容

然后,您只需要在cron命令中传递该参数,即:4 4***/usr/bin/php/var/www/mydomain.com/myscript.php RUN以在每天04:04运行n.b.轻松webtool检查您的cron语句是否正确-


通过这种方式,您可以将脚本保留在原来的位置,但当您浏览到它时,它不会执行。

没有标准的日志文件来说明脚本上次运行的时间。这是脚本本身必须创建/维护的内容。但是为什么只有一个脚本可以完成所有的任务呢?将实际作业放在文档根目录之外的某个位置cron不会关心该作业,然后在webroot中的某个内容只显示上次运行的结果。将主作业脚本保持在文档根目录之外完全可以通过点击url来防止它被执行。啊,我明白了。问题是我的web体验和php都很有限。你能推荐一些教程吗?谢谢你的建议。Marc说的主要一点是你应该把脚本放到webroot之外。编程知识是不需要的,只有cPanel。啊,明白了。聪明的我会尝试一下。但是在我的应用程序中,当我从那个URL中提取数据时,URL将是空白的,不是吗?我需要它来表示JSON,然后你需要把负责提供数据的代码块放在if语句之外:-我该怎么做,给出它的最新版本?我的PHP技能充其量是有限的。很难说,因为我不知道你的脚本是什么样子。但是,如果您将更新部分放在中,您只希望在cronjob在单独的函数execute\u update\u things中调用脚本时执行,那么您可以将$argv[1]=“RUN”execute\u update\u things;在脚本的顶部。