時を経て、私はこの奇妙な警告メッセージを受け取ります。通常、ページのリロード時に消えます。どういう意味ですか。私はグーグルではなく、役に立たない。暗号GCキャッシュエントリとは何ですか?
Warning: include(): GC cache entry '/.../...class.php' (dev=2049 ino=37120489) was on gc-list for 3840 seconds in /.../...class.php on line 111
時を経て、私はこの奇妙な警告メッセージを受け取ります。通常、ページのリロード時に消えます。どういう意味ですか。私はグーグルではなく、役に立たない。暗号GCキャッシュエントリとは何ですか?
Warning: include(): GC cache entry '/.../...class.php' (dev=2049 ino=37120489) was on gc-list for 3840 seconds in /.../...class.php on line 111
間違いなくこの問題は、apc-3.1.6-r1パッケージのソースコードAPCから発生します。 itemがユーザーのキャッシュまたはファイルキャッシュに挿入されると、この関数が呼び出されます。
APCの設定( http://cz.php.net/manual/en/apc.configuration.php#ini.apc.gc-ttl)apc.gc_ttl integer
から
static void process_pending_removals(apc_cache_t* cache TSRMLS_DC)
{
slot_t** slot;
time_t now;
/* This function scans the list of removed cache entries and deletes any
* entry whose reference count is zero (indicating that it is no longer
* being executed) or that has been on the pending list for more than
* cache->gc_ttl seconds (we issue a warning in the latter case).
*/
if (!cache->header->deleted_list)
return;
slot = &cache->header->deleted_list;
now = time(0);
while (*slot != NULL) {
int gc_sec = cache->gc_ttl ? (now - (*slot)->deletion_time) : 0;
if ((*slot)->value->ref_count <= 0 || gc_sec > cache->gc_ttl) {
slot_t* dead = *slot;
if (dead->value->ref_count > 0) {
switch(dead->value->type) {
case APC_CACHE_ENTRY_FILE:
apc_warning("GC cache entry '%s' (dev=%d ino=%d) was on gc-list for %d seconds" TSRMLS_CC,
dead->value->data.file.filename, dead->key.data.file.device, dead->key.data.file.inode, gc_sec);
break;
case APC_CACHE_ENTRY_USER:
apc_warning("GC cache entry '%s'was on gc-list for %d seconds" TSRMLS_CC, dead->value->data.user.info, gc_sec);
break;
}
}
*slot = dead->next;
free_slot(dead TSRMLS_CC);
}
else {
slot = &(*slot)->next;
}
}
}
キャッシュエントリがガベージコレクションのリストに残り続ける秒数。この値は、キャッシュされたソースファイルの実行中にサーバープロセスが停止した場合にフェールセーフを提供します。そのソースファイルが変更された場合、古いバージョンに割り当てられたメモリは、このTTLに達するまで再利用されません。この機能を無効にするには、ゼロに設定します。
"GCキャッシュエントリ '%s'(dev =%d ino =%d)が%d秒間gc-listにありました"または "GCキャッシュエントリ '%s'はこの状態では%d秒」:
(gc_sec > cache->gc_ttl) && (dead->value->ref_count > 0)
まず条件手段、項目がapc.gc_ttl秒前、後、その後削除され、そのまだガベージコレクタのリストにありました。秒の条件は、項目がまだ参照されていることを意味します。
プロセスが予期せず死んだ場合、参照は減少しません。最初のapc.ttl秒はAPCキャッシュでアクティブになり、次に削除されます(このアイテムに次のヒットはありません)。アイテムがガベージコレクタリスト(GC)にあり、apc.gc_ttlタイムアウトが実行されています。 apc.gc_ttlが(now - item_deletion_time)より小さい場合、警告が書き込まれ、アイテムは完全にフラッシュされます。
ログ(Webサーバ、PHP、システム/カーネル)の重大なエラーをチェックしてみてください。 PHPは、Webサーバーのsegfault。
「APC」に関係していると思いますが、APCをインストールしていますか? – tawfekov
APCが(おそらく)メモリ不足です。 http://pecl.php.net/bugs/bug.php?id=16966 – teemitzitrone
この問題は修正されました(警告からデバッグにダウングレードされました):https://github.com/krakjoe/apcu/pull/45/files – aimfeld