cPanel中Cron Job自动执行Ajax数据推送失败问题求助
Cron Job无法自动运行前端触发的数据提交脚本问题
我在cPanel中配置了每10分钟执行一次的Cron Job,想要自动把页面数据发送到外部资源,但手动操作功能正常,Cron运行后却无法正常工作。
我想要自动化的是index.php中的这段前端脚本(该文件还包含嵌入HTML的PHP代码):
function select_all_booking() { var check_all = $("#th_booking").is(":checked"); if(check_all == true) { $(".check_all").prop("checked",false); } else { $(".check_all").prop("checked",true); } } function show_ntmp_detail(hb_id) { $("#show_ntmp").modal("show"); $.post("?",{hb_id:hb_id,show_error_log:true},function(data){ if(data!="") { $(".show_ntmp_history_detail").html(data); } }); } function get_posted_record() { var fdatep = $("input[name=fdatep]") .val(); var tdatep = $("input[name=tdatep]") .val(); var branchp = $("select[name=branchp] option:selected").val(); $.post("postdata_stch_posted_record.php",{fdate:fdatep,tdate:tdatep,branch:branchp},function(data){ $(".show_posted_record").html(data); }); }
我尝试的Cron规则为:
*/10 * * * * /usr/local/bin/php /path/to/index.php
问题原因与解决办法
核心问题:你用PHP命令行执行
index.php完全无效,因为要自动化的是前端JavaScript函数。PHP CLI环境不会加载浏览器,也不会解析执行JS代码,自然触发不了get_posted_record()里的异步提交逻辑——手动操作时是浏览器执行了这段JS,才完成数据提交。正确实现步骤:
- 抽离数据提交的核心逻辑,摆脱对前端的依赖:写一个独立的PHP脚本(比如
auto_post_data.php),在里面直接处理日期范围、分支参数(可以预设固定值,或者从数据库/配置文件读取),然后用PHP的curl或file_get_contents调用postdata_stch_posted_record.php的处理逻辑,或者直接把postdata_stch_posted_record.php里的业务代码整合到这个脚本中。 - 修改Cron Job,让它执行这个独立的PHP脚本:
*/10 * * * * /usr/local/bin/php /path/to/auto_post_data.php - 如果需要和手动操作使用相同的动态参数,可在
auto_post_data.php中通过配置文件、数据库查询等方式获取,不要依赖前端的输入控件。
- 抽离数据提交的核心逻辑,摆脱对前端的依赖:写一个独立的PHP脚本(比如
内容的提问来源于stack exchange,提问作者Muhammad Irfan
相关产品推荐
相关产品推荐

