4
hook_init()的替代方法
我hook_init()用来检查用户的上次访问时间。如果最后访问时间是昨天,我将增加一个计数器并设置一些变量。 问题在于,对于相同的页面加载,hook_init()有时执行的次数超过一次(我可以使用看到dsm()),因此我的代码多次执行,导致变量错误。 为什么hook_init()执行不止一次? 解决我的问题的最佳方法是什么?我应该使用另一个挂钩吗? 我对此进行了更多研究: 我搜索了对hook_init()的调用(搜索了string module_invoke_all('init');),但只找到了核心调用)。我不知道这可以用不同的方式称呼。 这是我的hook_init() function episkeptis_achievements_init(){ dsm('1st execution'); dsm('REQUEST_TIME: '.format_date(REQUEST_TIME, 'custom', 'd/m/Y H:i:s').' ('.REQUEST_TIME.')'); } 这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:32 (1341822032) 然后,将dsm()消息更改为dsm('2nd execution');并再次执行,这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:34 (1341822034) 2nd execution REQUEST_TIME: 09/07/2012 11:22:28 (1341822148) 您可以看到该代码执行了两次。但是,第一次执行代码的旧副本,第二次执行更新的副本。也有2秒的时差。 这是php 5.3.10的d7版本