我有3个问题对我的项目有很大的帮助,我坚持不懈,经过大幅缩小后,这些问题都来自解决方案:
我可以使用一个php文件来更改另一个php文件中的变量值,这些值也可以从一个php文件读到另一个吗?
如何使用crob job更改php代码中的变量值?
最后,cron能否在我的php文件中读取变量值?例如,if语句将决定触发什么以及如何在cron时间到来时触发?
我在cron有点新,并且深入了解php并需要所有的exeprtise帮助。我不能使用任何CURL或框架。
请防止劫持我的主题,我想要的数据是简单的将filenameA.php中的$ variable = 1更改为使用filenameB.php的$ variable = 2
答案 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.php
,my_cron_job.php
和my_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.