亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 CRON 更改 PHP 全局變量

通過 CRON 更改 PHP 全局變量

PHP
喵喵時光機 2021-12-24 10:19:22
關于 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例如通過相同的腳本)。然后,每次您需要該數據時 - 只需從數據庫中獲取即可。

希望能向你澄清一些事情。


查看完整回答
反對 回復 2021-12-24
  • 1 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號