Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有数据库的情况下每5分钟保存一次Php变量_Php - Fatal编程技术网

如何在没有数据库的情况下每5分钟保存一次Php变量

如何在没有数据库的情况下每5分钟保存一次Php变量,php,Php,在我的网站上有一个php函数func1,它从其他资源获取一些信息。运行此功能的成本非常高 我希望当Visitor1访问我的网站时,这个func1被执行,值存储在$variable1=func1中;在文本文件或其他文件中,但不是数据库中 然后开始5分钟的时间间隔,在此时间间隔内,Visitor2访问我的网站时,他从文本文件中获取值,而不调用函数func1 当Visitor3在20分钟后出现时,应再次使用该功能并将新值存储5分钟 怎么做?一个小的工作示例会很好。在文本文件中。最古老的保存东西的方法几

在我的网站上有一个php函数func1,它从其他资源获取一些信息。运行此功能的成本非常高

我希望当Visitor1访问我的网站时,这个func1被执行,值存储在$variable1=func1中;在文本文件或其他文件中,但不是数据库中

然后开始5分钟的时间间隔,在此时间间隔内,Visitor2访问我的网站时,他从文本文件中获取值,而不调用函数func1

当Visitor3在20分钟后出现时,应再次使用该功能并将新值存储5分钟


怎么做?一个小的工作示例会很好。

在文本文件中。最古老的保存东西的方法几乎是。或者执行cronjob,在访问时每5分钟独立运行一次脚本和函数。

在文本文件中。最古老的保存东西的方法几乎是。或者执行cronjob,在访问时每5分钟独立运行一次脚本和函数。

使用缓存,例如APC

如果资源真的很大,这可能不是最好的选择,文件可能会更好

看看:

apc_商店 apc_取数
祝你好运

使用缓存,例如APC

如果资源真的很大,这可能不是最好的选择,文件可能会更好

看看:

apc_商店 apc_取数
祝你好运

将其存储在文件中,并检查文件的时间戳,如果文件太旧,请刷新它

$maxage = 1200; // 20 minutes...
// If the file already exists and is older than the max age
// or doesn't exist yet...
if (!file_exists("file.txt") || (file_exists("file.txt") && filemtime("file.txt") < (time() - $maxage))) {
  // Write a new value with file_put_contents()
  $value = func1();
  file_put_contents("file.txt", $value);
}
else {
  // Otherwise read the value from the file...
  $value = file_get_contents("file.txt");
}

注意:已经有专门的缓存系统,但是如果您只需要担心这一个值,这是一种简单的缓存方法。

将其存储在文件中,并检查文件的时间戳,如果文件太旧,请刷新它

$maxage = 1200; // 20 minutes...
// If the file already exists and is older than the max age
// or doesn't exist yet...
if (!file_exists("file.txt") || (file_exists("file.txt") && filemtime("file.txt") < (time() - $maxage))) {
  // Write a new value with file_put_contents()
  $value = func1();
  file_put_contents("file.txt", $value);
}
else {
  // Otherwise read the value from the file...
  $value = file_get_contents("file.txt");
}

注意:已经有专门的缓存系统了,但是如果您只需要担心这一个值,那么这是一种简单的缓存方法。

您试图实现的就是缓存。您在这里看到的其他一些答案描述了最简单的缓存:文件缓存。根据数据的大小、应用程序的需要等,还有许多其他的缓存选项

以下是一些缓存存储选项:

文件 数据库/SQLite是的,您可以缓存到数据库 MemCached 空气污染指数 XCache 还有很多东西可以缓存。以下是一些:

纯文本/HTML 序列化数据,如PHP对象 函数调用输出 完整页 对于一种简单但非常可配置的缓存方式,您可以使用Zend框架中的Zend_缓存组件。这可以单独使用,而无需使用整个框架

我看到有人说使用会话。这不是您想要的,因为会话仅对当前用户可用

以下是使用Zend_缓存的示例:

include ‘library/Zend/Cache.php’;

// Unique cache tag
$cache_tag = "myFunction_Output";

// Lifetime set to 300 seconds = 5 minutes
$frontendOptions = array(
   ‘lifetime’ => 300,
   ‘automatic_serialization’ => true
);

$backendOptions = array(
    ‘cache_dir’ => ‘tmp/’
);

// Create cache object 
$cache = Zend_Cache::factory(‘Core’, ‘File’, $frontendOptions, $backendOptions);

// Try to get data from cache
if(!($data = $cache->load($cache_tag)))
{
    // Not found in cache, call function and save it
    $data = myExpensiveFunction();
    $cache->save($data, $cache_tag);
}
else
{
    // Found data in cache, check it out
    var_dump($data);
}

您试图完成的工作称为缓存。您在这里看到的其他一些答案描述了最简单的缓存:文件缓存。根据数据的大小、应用程序的需要等,还有许多其他的缓存选项

以下是一些缓存存储选项:

文件 数据库/SQLite是的,您可以缓存到数据库 MemCached 空气污染指数 XCache 还有很多东西可以缓存。以下是一些:

纯文本/HTML 序列化数据,如PHP对象 函数调用输出 完整页 对于一种简单但非常可配置的缓存方式,您可以使用Zend框架中的Zend_缓存组件。这可以单独使用,而无需使用整个框架

我看到有人说使用会话。这不是您想要的,因为会话仅对当前用户可用

以下是使用Zend_缓存的示例:

include ‘library/Zend/Cache.php’;

// Unique cache tag
$cache_tag = "myFunction_Output";

// Lifetime set to 300 seconds = 5 minutes
$frontendOptions = array(
   ‘lifetime’ => 300,
   ‘automatic_serialization’ => true
);

$backendOptions = array(
    ‘cache_dir’ => ‘tmp/’
);

// Create cache object 
$cache = Zend_Cache::factory(‘Core’, ‘File’, $frontendOptions, $backendOptions);

// Try to get data from cache
if(!($data = $cache->load($cache_tag)))
{
    // Not found in cache, call function and save it
    $data = myExpensiveFunction();
    $cache->save($data, $cache_tag);
}
else
{
    // Found data in cache, check it out
    var_dump($data);
}

只需使用文件I/O…设置一个类似data.txt的文件,用于存储数据。您可以使用filemtime函数来确定上次编辑文件的时间…如果是在5分钟前,请再次运行该函数,存储数据,然后再运行5分钟。该函数与用户相关吗?为什么该函数成本高昂?是因为获取的数据的大小、获取数据所需的查询的复杂性还是其他原因?@ElzoValugi否,该函数与用户无关。@msgmash.com说昂贵是不正确的。问题是我从中获取数据的远程服务器的响应时间不是很快。只需使用文件I/O…设置一个类似data.txt的文件来存储数据。您可以使用filemtime函数来确定上次编辑文件的时间…如果是在5分钟前,请再次运行该函数,存储数据,然后再运行5分钟。该函数与用户相关吗?为什么该函数成本高昂?是因为获取的数据的大小、获取数据所需的查询的复杂性还是其他原因?@ElzoValugi否,该函数与用户无关。@msgmash.com说昂贵是不正确的。问题是我从中获取数据的远程服务器的响应时间不是很快。还有redis作为缓存选项
吃溶液,非常感谢。不幸的是,我只能选择一个作为解决方案,目前我使用的是@michael@alisia123没问题,这个网站也是为了将来为用户共享信息!还有redis作为缓存选项的伟大解决方案,非常感谢。不幸的是,我只能选择一个作为解决方案,目前我使用的是@michael@alisia123没问题,这个网站也是为了将来为用户共享信息!