我们可以在php中创建一个可以从任何php脚本操作的超全局布尔变量吗?
我有一个每分钟运行一次的php脚本来检查一些东西。我需要的是,如果脚本找到它要检查的内容,那么将布尔值设置为true,以便在脚本的后续运行中,它可以知道之前的运行已将布尔值设置为true。据我所知,$GLOBALS只能从脚本中访问。目前我正在使用数据库来实现这一点。有更好的方法吗?如果PHP会话($\u会话)是同一会话中的循环,那么您需要阅读它。假设PHP会话已启动,则可以使用会话变量。 以下是一个基本示例:我们可以在php中创建一个可以从任何php脚本操作的超全局布尔变量吗?,php,superglobals,Php,Superglobals,我有一个每分钟运行一次的php脚本来检查一些东西。我需要的是,如果脚本找到它要检查的内容,那么将布尔值设置为true,以便在脚本的后续运行中,它可以知道之前的运行已将布尔值设置为true。据我所知,$GLOBALS只能从脚本中访问。目前我正在使用数据库来实现这一点。有更好的方法吗?如果PHP会话($\u会话)是同一会话中的循环,那么您需要阅读它。假设PHP会话已启动,则可以使用会话变量。 以下是一个基本示例: <?php // start session session_start();
<?php
// start session
session_start();
// Should we check something once only?
if(!isset($_SESSION['checked'])){
// Store timestamp incase we want to do the work
// again every so often...
$_SESSION['checked'] = time();
// Do the work...
// Your work code here...
}
?>
如果它运行在不同的时间或CRON,您可以使用一个简单的缓存文本文件?同样,这只是一个基本示例,还需要进行许多其他检查,另外还需要自己管理输出。我用一个非常简单的if/else来说明逻辑。尽管有各种各样的方法
<?php
$checked = "/root/path/to/my/cachefile.txt";
$do_work = false;
$err = false;
if($last_time = file_get_contents($checked)){
// Optional: Check to see how long it was since we
// did it last and if we need to do it
// again, flag $do_work as TRUE
} else {
if(file_put_contents($checked,time())){
$do_work = true;
} else {
$err = true;
}
}
// So at this stage we are either going to
// to the work, the work's already been done
// or we can't do the work because there
// was a problem
if($err){
// report a problem as we are unable to
// log the work being done, even if it was
} else {
if($do_work){
// Do your work
}
}
?>
解决方案1-环境变量 您可能需要的是系统范围内存在的东西。 我首先想到的是环境变量。你可以根据需要读写它们。您可以随时检查它们,但其他应用程序也可以看到它们
如果您有一个类似于的系统作为应用程序的一部分运行,您可以使用它来存储标志/条件 可能就是你在找的。它被归类为超级全局脚本如何运行?知道之前发生的事情的原因是什么?也就是说,如果它被设置为“如果它不存在,会发生什么”——这需要长期持续还是短期持续?等等,你能举个例子吗。php页面从不通过浏览器访问。它只是在后台运行。如果脚本每分钟都在运行,那么它可能是作为来自Cron的CLI运行的?这意味着您将无法使用会话。。?数据库可能是您最好的选择,但如果文本文件不可能出现锁定或多个用户问题,您可以使用它。是的,它是从cron运行的。它在后台每分钟运行一次。不涉及浏览器。在这种情况下我可以使用会话吗?虽然我在评论中建议使用PHP会话,但我认为在CLI上运行时它们不起作用。另一个解决方案可能是建议。添加了基于文件的检查,所以基本上我需要将布尔值放入文本文件或数据库,可能文本文件和使用数据库不会有太多性能问题。我想我会坚持我的数据库解决方案。