关于 PHP、wordpress 和 CRONE 的问题。我无法通过小部件调用的函数中的 CRON 过程更改全局变量。$containerregister_activation_hook(__FILE__, 'activate_my_plugin');function activate_my_plugin() { wp_clear_scheduled_hook('update_container'); wp_schedule_event( time(), 'hourly', 'update_container');}add_action('update_container', 'update_container');function update_container() { global $container; // updating container}function use_container() { global $container; // !And here we have undefined $container}class acw_widget extends WP_Widget{ // ... public function widget( $args, $instance ) { use_container(); }}我正在尝试在 WP 站点上缓存对 DB 的请求。因此,我决定使用 CRON 来安排请求并将结果存储在某个全局容器中。假设小部件会出于其目的从容器中获取数据,但我遇到了看起来像“未定义容器”的问题。因此,我激活插件,wp-cron.php 显示,该容器已更新(在“update_container”处),但在“use_container”中获取容器显示,$container 未定义且未更新。请你解释一下,为什么会这样?如何跟踪初始化/更新全局容器的正确顺序?代码是真实代码的简化版。也许这很尴尬,但我是 PHP 和 wordpress 的新手,所以这是我找到的解决方案。
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
您不能使用任何变量 (inc global) 作为数据“容器”。因为 PHP 没有状态,所以每个 php 脚本都是“从头开始”运行的。
因此,当您的CRON脚本运行时 - 它global $container仅针对当前运行进行更新。然后,当您运行您的widget功能时 - 它是另一个“运行”,您会发现它$container没有定义。
您需要的不仅仅是使用变量,而是将数据存储在数据库中(CRON例如通过相同的脚本)。然后,每次您需要该数据时 - 只需从数据库中获取即可。
希望能向你澄清一些事情。
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消
