在PHP中存储脚本最后运行时间

时间:2010-12-16 22:34:26

标签: php time

我需要存储上次运行脚本的时间,以确保它不会读取旧项目(在这种情况下是推文)。什么是追踪这个的最好方法?

感谢。

5 个答案:

答案 0 :(得分:2)

你没有提供有关细节的零信息,所以我将是一般的。

  1. 将其存储在MySQL等数据库中
  2. 使用file_put_contents()将其写入本地文件,并使用file_get_contents()
  3. 进行阅读
  4. 使用其中一个os函数触摸本地文件,然后对文件进行统计以查看它是mtime
  5. 使用sqlite将其写入本地数据库

答案 1 :(得分:2)

生成时间戳并将其保存到可在下一次迭代中读取的日志文件中。

$time_ran = time();

function saveTimeRan(){
  $fh = fopen('/path/to/a/new/log' 'w+');
  fwrite($fh, $time_ran);
  fclose($fh);
}

function getTimeRan(){
  $fh = fopen('/path/to/a/new/log' 'r+');
  $time = fgets($fh);
  fclose($fh);
  return $time;
}

我可能建议你把它作为一个对象并将saveTimeRan的内容放在magic __destruct函数中,所以当你的对象是GC时它会节省时间。只是一个建议。您可以将推文功能放在其他对象方法中,并创建一个全面的界面。或者,您可以将值保存到数据库字段,并在每次迭代时调用它。

答案 2 :(得分:2)

  

什么是追踪的最佳方式   此?

最好的方法是在内存中跟踪它(redis / apc / memcached / etc)(由任何持久存储(mysql / mongodb / redis / etc)备份。你应该尽量避免触摸光盘( I / O)因为与内存速度相比,这非常慢。

Redis的

您可以通过两种方式配置redis:

  • 在经过一段时间后修复了数据(异步)(或快照),或者修改了密钥。
  • 立即将数据写回持久性存储(仅附加)。

这是一种权衡(性能与安全性)

APC / Memcached的

APC和Memcached没有持久存储,所以你必须使用例如mysql。

答案 3 :(得分:0)

您可以将时间戳存储在数据库或文本文件中。

答案 4 :(得分:0)

您可以让脚本在每次运行时为文本文件写入时间戳/日期。然后,您可以选择在运行脚本之前读取该文件,以确保在x时间过去之前不再运行它,或者仅在某个条件为真时才运行。

结帐file_put_contentsfile_get_contents

-Ryan