2016-10-14 96 views
0

我有一個PHP腳本,它會清除APC。 腳本工作正常,當我用瀏覽器打開它,但是當我從命令行運行該文件,它不清除緩存。apc_clear_cache不是在命令行工作在PHP

我查apc.enable_cli設置,這也是對(查看截圖)。 Settings dump

這裏是我的PHP代碼

<?php 

if (isset($argv[1])) { 
    $key = $argv[1]; 

    $info = apc_cache_info("user"); 
    foreach ($info['cache_list'] as $obj) { 
     if (strstr($obj['info'], $key)) { 
      apc_delete($obj['info']); 
     } 
    } 

} else { 
    apc_clear_cache("user"); 
} 
?> 

我缺少什麼或者做錯了嗎?

+2

我想你也應該發佈其清除緩存代碼 –

+0

@JakubJankowski:添加了代碼。 – kadamb

+0

我對PHP不太熟悉,但也許它與權限有關?從命令行運行文件時是否顯示錯誤? –

回答

1

您可以通過命令行不清晰APC緩存,因爲你不打你的Web服務器的同一APC段。

請注意,enable_cli只允許您在CLI環境中使用APC,但會爲您的腳本創建一個段,並在腳本末尾銷燬它。它不使用相同的段,因爲它不知道你的網絡服務器。

你有兩個選擇:

  • 通過FastCGI的調用腳本(見下文)
  • 電話與file_get_contents()或類似的網頁,使用http://

如果您需要訪問APC數據,你也可以閱讀我的文章:https://www.dugwood.com/949904-php5-opcode-caching-and-memory-storage-with-apc-xcache-in-command-line-interface-cli-or-cron.html

+1

我確實使用了: 捲曲-s 127.0.0.1/clear_cache.php>的/ dev/null的& 和php文件寫的代碼 – kadamb

相關問題