php和cron工作问题,我可以从另一个php文件中更改php文件中的一个变量吗?

时间:2011-06-14 15:46:14

标签: php cron

我有3个问题对我的项目有很大的帮助,我坚持不懈,经过大幅缩小后,这些问题都来自解决方案:

  1. 我可以使用一个php文件来更改另一个php文件中的变量值,这些值也可以从一个php文件读到另一个吗?

  2. 如何使用crob job更改php代码中的变量值?

  3. 最后,cron能否在我的php文件中读取变量值?例如,if语句将决定触发什么以及如何在cron时间到来时触发?

  4. 我在cron有点新,并且深入了解php并需要所有的exeprtise帮助。我不能使用任何CURL或框架。

    请防止劫持我的主题,我想要的数据是简单的将filenameA.php中的$ variable = 1更改为使用filenameB.php的$ variable = 2

3 个答案:

答案 0 :(得分:1)

我不确定您在PHP文件之间交换什么类型的数据。我也很新,但会看到社区对我的回答的看法。 (批评欢迎)

我希望我的PHP文件将我的公共数据写入txt文件。当cron作业执行PHP文件时,PHP文件可以使用公共数据访问/写入txt文件。

答案 1 :(得分:1)

您似乎在描述某种类型的配置文件。

我建议使用XML文件或数据库表。

对于XML文件,您可以使用以下内容:

<settings>
    <backup>
        <active>1</active>
        <frequency>daily</frequency>
        <script_file>backup.php</script_file>
    </backup>
    <reporting>
        <active>1</active>
        <frequency>weekly</frequency>
        <script_file>generate_report.php</script_file>
    </reporting>
    <time_chime>
        <active>1</active>
        <frequency>hourly</frequency>
        <script_file>ring_bell.php</script_file>
    </time_chime>
</settings>

然后有一些cron每小时调用的控制器脚本,它读取XML文件并相应地调用脚本。你的crontab看起来像:

0    *    *    *    *    php /path/to/script/cron_controller.php

和cron_controller.php将包含类似的内容:

$run_time = time();

$cron_config = simplexml_load_file($conf_file_location);
if($cron_config === false) die('failed to load config file');

foreach($cron_config as $cron) {
    if($cron->active != 1) continue;  //cron must be active
    $run_script = false;

    switch((string) $cron->frequency) {
        case 'hourly':
            $run_script = true;
            break;
        case 'daily':
            if(date('H', $run_time) == '00') //is it midnight?
                $run_script = true;
            break;
        case 'weekly':
            if(date('w:H', $run_time) == '0:00') //is it sunday at midnight?
                $run_script = true;
            break;
    }

    if($run_script) {
        $script_file = (string) $cron->script_file;
        if(file_exists($script_file)) {
            echo "running $script_file\n";
            require($script_file);
        }
        else {
            echo "could not find $script_file\n";
        }
    }
}

如果您需要使用php脚本编辑配置,可以使用SimpleXML执行此操作,然后使用$cron_config->saveXML($conf_file_location);

将其保存回原始位置

答案 2 :(得分:1)

这不是一个很好的做法,但这是你能做的最简单的事情:

您需要三个文件:my_script.phpmy_cron_job.phpmy_data.txt

在控制$data的脚本中(这称为my_cron_job.php):

<?php
  $values = array(
              "some_key" => "some_value",
              "anything" => "you want"
              );

  file_put_contents("my_data.txt",serialize($values));

运行它也会创建my_data.txt。

然后,在my_script.php

<?php     
  $data = unserialize(file_get_contents("my_data.txt"));
  print_r($data);   //if you want to look at what you've got.