Попробуйте проверить свои журналы (веб-сервер, php, система / ядро) на наличие критических ошибок, например, php, веб-сервер segfault.

от времени я получаю это странное предупреждение. Обычно это происходит при перезагрузке страницы. Что это обозначает. Я погуглил, но безрезультатно.

Warning: include(): GC cache entry '/.../...class.php' (dev=2049 ino=37120489) was on gc-list for 3840 seconds in /.../...class.php on line 111
 teemitzitrone11 янв. 2011 г., 12:43
APC (вероятно) не хватает памяти.pecl.php.net/bugs/bug.php?id=16966
 tawfekov11 янв. 2011 г., 12:05
Я думаю, это как-то связано сAPC у вас установлен APC?
 aimfeld27 февр. 2014 г., 09:43
Эта проблема была исправлена ​​(понижено с предупреждения до отладки):github.com/krakjoe/apcu/pull/45/files

Ответы на вопрос(1)

Решение Вопроса

исходный код из пакета apc-3.1.6-r1. Когда элемент вставляется в пользовательский или файловый кеш, вызывается эта функция.

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;
    }
} 
}

Из конфигурации APC (http://cz.php.net/manual/en/apc.configuration.php#ini.apc.gc-ttl )

apc.gc_ttl integer

Количество секунд, в течение которых запись в кэше может оставаться в списке сбора мусора. Это значение обеспечивает отказоустойчивость в случае смерти серверного процесса при выполнении кэшированного исходного файла; если этот исходный файл изменен, память, выделенная для старой версии, не будет возвращена, пока не достигнут этот TTL. Установите на ноль, чтобы отключить эту функцию.

Мы получаем сообщения "Запись в кэше GC"% s "(dev =% d ino =% d) была в списке gc в течение% d секунд" или "Запись в кэше GC"% s "была в списке gc в течение% d секунд" в этом состоянии:

(gc_sec > cache->gc_ttl) && (dead->value->ref_count > 0)

Первое условие означает, что элемент был удален позже, чем apc.gc_ttl несколько секунд назад, и он все еще находится в списке сборщика мусора. Условие Seconds означает, что на элемент все еще ссылаются.

например когда процесс неожиданно умер, ссылка не уменьшается. Сначала в кэше APC активны apc.ttl секунд, затем он удаляется (следующего элемента по этому элементу нет). Теперь элемент находится в списке сборщика мусора (GC) и время ожидания apc.gc_ttl работает. Когда значение apc.gc_ttl меньше (теперь - item_deletion_time), выдается предупреждение и элемент полностью сбрасывается.

Попробуйте проверить свои журналы (веб-сервер, php, система / ядро) на наличие критических ошибок, например, php, веб-сервер segfault.

Ваш ответ на вопрос