首页 > 解决方案 > 带有 cron 的 Javascript

问题描述

我正在为数据库使用 codeigniter 和 cpanel。我已经设置了一个 cronjob。在 cronjob 函数中,我正在调用一个函数。在该功能中,我正在创建一个 pdf - 它包括地图和图表。我为 cron 创建了链接。当我在浏览器中单击该链接时,它正在工作。但在 cronjob 中它不起作用。

public function distance_report_test_pdf($test)
{
    $this->load->view('client_admin/distance_reporttest',$data);
}
$(document).ready(function() {
  get_pdfreport();
}

function get_pdfreport()
{
  window.location.href = '<?php echo base_url();?>index.php/Auto_email_schedule_controller/generate_mapimage/' 
      + user + '/' + start_date + '/' + to_date + '/' + location + '/' + group + '/' + region + '/' + manager + '/' + client_id + '/' + schedule_id;
}

我只需要get_pdfreport();在 cronjob 中调用该函数。它包含在“ distance_reporttest.php ”视图文件中。我的服务器是linux服务器。是否可以在 cron 中的 javascript 之上运行?如果没有,请告诉我,我该怎么办?

标签: javascriptphpcron

解决方案


cronjob 只是运行一个命令行脚本。

您可以使用 命令行通过命令行运行 PHP 程序php /path/to/file.php,但该脚本的输出只会转储到 STDOUT。它不会解析 HTML。它不会从脚本元素中提取 JavaScript。它不会执行那个 JavaScript。

您可以通过向支持 PHP 的 Web 服务器发出 HTTP 请求来运行 PHP 程序。您可以通过运行类似curlwget从命令行的 HTTP 客户端来做到这一点。同样,他们不会解析 HTML 等。

你可以做同样的事情,但是使用像 Puppeteer 这样的工具来解析 HTML 并运行 JS 等。

……但这将是一种非常复杂且昂贵的方法。


重写 PHP,以便当前在 JavaScript 中的逻辑(生成一些数据,然后通过 URL 将其传递给不同的 PHP 程序)改为用 PHP 表示(并且让 PHP 程序只使用它而不是将其传递给不同的 PHP 程序)。


推荐阅读