좋아, 나는 이미 당신의 요구 사항을 이해하고 있습니다. 아래는 신체와 관련이없는 PHP 코드 세그먼트의 시작과 끝을 포함하는 지침에 따라 생성 된 기사의 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 다음 내용은 기사의 본문과 관련이 없습니다.,예로만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"기사가 시작되기 전에 신속한 정보\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># apcu_key_info 기능에 대한 일반적인 이유와 솔루션은 널 값을 반환합니다,확인하는 방법</span></span><span>
사용 중 PHP ~의 APCu 확장 할 때,우리는 종종 그것을 사용합니다 `apcu_key_info` 함수 캐시에 지정된 것을 얻습니다 key ~의详细信息。하지만,때때로이 함수는 호출되지만 널 값을 반환합니다.,이것은 개발자를 혼란스럽게합니다。이 기사는 분석 할 것입니다 `apcu_key_info` 빈 값을 반환하십시오~의일반적인 이유,并提供详细~의排查그리고解决方法。
</span><span><span class="hljs-comment">## 하나、일반적인 이유</span></span><span>
</span><span><span class="hljs-number">1</span></span><span>. **Key 존재하지 않거나 청소되었습니다**
- APCu 메모리 캐시입니다,缓存~의 key 메모리 제한이 적용됩니다、만료 시간 또는 수동 청소가 사라집니다。
- 如果你查询~의 key 캐시에 기록되지 않았습니다,또는 만료되었습니다,`apcu_key_info` 빈 값을 반환합니다。
</span><span><span class="hljs-number">2</span></span><span>. **APCu 확장이 활성화되지 않았습니다**
- 존재하다 PHP 구성 중,활성화되지 않은 경우 APCu 扩展또는존재하다 CLI 모드에서 비활성화되었습니다,관련 기능은 데이터를 정상적으로 반환 할 수 없습니다。
- 통과 할 수 있습니다 `</span><span><span class="hljs-title function_ invoke__">phpinfo</span></span><span>()` 또는 `</span><span><span class="hljs-title function_ invoke__">extension_loaded</span></span><span>(</span><span><span class="hljs-string">'apcu'</span></span><span>)` 확장자가 활성화되어 있는지 확인하십시오。
</span><span><span class="hljs-number">3</span></span><span>. **Key 잘못된 유형**
- APCu ~의 key 문자열 유형이어야합니다,배열이 전달되는 경우、对象또는其他非字符串类型,또한 널 값이 반환됩니다.。
</span><span><span class="hljs-number">4</span></span><span>. **CLI 그리고 Web 모드 캐시는 공유되지 않습니다**
- 존재하다 CLI 모드에서 호출됩니다 `apcu_key_info` 얻다 Web 模式缓存~의 key 실패합니다,왜냐하면 APCu 캐시는 프로세스 메모리 공유입니다,CLI 그리고 Web 다른 과정입니다。
- 解决方法是确保操作环境그리고写入缓存环境하나致。
</span><span><span class="hljs-number">5</span></span><span>. **内存限制또는缓存被回收**
- APCu 会根据配置~의 `apc.shm_size` 캐시 크기를 제한합니다,캐시가 가득 찬 경우,旧~의 key 재활용됩니다,이어 `apcu_key_info` 빈 값을 반환하십시오。
</span><span><span class="hljs-comment">## 둘、문제 해결 방법</span></span><span>
</span><span><span class="hljs-number">1</span></span><span>. **조사하다 key 是否存존재하다**
```php
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">apcu_exists</span></span><span>(</span><span><span class="hljs-string">'my_key'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">apcu_key_info</span></span><span>(</span><span><span class="hljs-string">'my_key'</span></span><span>));
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Key 不存존재하다또는已过期"</span></span><span>;
}
</span></span>APCU 확장이 활성화되어 있는지 확인하십시오
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">extension_loaded</span></span><span>(</span><span><span class="hljs-string">'apcu'</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"APCu 확장이 활성화되지 않았습니다"</span></span><span>);
}
</span></span>키 유형이 문자열인지 확인하십시오
<span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">'my_key'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_string</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>)) {
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strval</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>);
}
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">apcu_key_info</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>));
</span></span>CLI와 웹의 캐시 차이를 확인하십시오
CLI 모드에서 웹 캐시 데이터를 얻지 않으려면 웹 환경에서 캐시에 액세스하거나 PHP-FPM을 통해 호출하십시오.
캐시 크기를 늘리거나 쓸모없는 캐시를 늘리십시오
APC.shm_size 구성을 조정하거나 만료 된 캐시를 정기적으로 정리하십시오.
<span><span><span class="hljs-title function_ invoke__">apcu_clear_cache</span></span><span>();
</span></span>캐시 키가 올바르게 작성되었으며 만료되지 않았는지 확인하십시오.
APCU 확장이 활성화되어 동일한 프로세스/환경에서 작동하는지 확인하십시오.
키 유형이 문자열인지 확인하십시오.
빈번한 널 값의 경우 캐시 크기 조정 또는 캐시 전략 최적화를 고려할 수 있습니다.
위의 방법을 통해 빈 값을 반환하는 APCU_Key_Info 의 대부분의 문제는 효과적으로 문제를 해결하고 해결할 수 있습니다.
<hr> <? php // 다음 내용은 기사의 본문과 관련이 없으며 결말 예제 Echo "기사 끝 프롬프트 정보 \ n"으로만 사용됩니다. ?>```필요한 경우 그래픽 문제 해결 흐름도를 추가하여 원인과 솔루션을보다 직관적으로 만들 수 있습니다.