0

明らかな何かが欠けているに違いない。私の APC は正しくインストールされ、phpinfo() に問題なく表示されます。現在、Apache で APC 3.1.13 を使用して php 5.4.20 を実行しています。これは cpanel のインストールなので、その点にも注意してください。

主な問題は、キャッシュが機能していることですが、ページの読み込み中のみです。私が走れば

<?php
    apc_store('foo', 'bar');
    echo apc_fetch('foo');
?>

変数をエコーアウトしますが、apc_store をコメントアウトしてコードを再度実行すると、何も表示されず、var_dump に boolean(false); と表示されます。

何かばかげたことをしている場合に備えて、このコードも試しましたが、これも機能しません。常に「キャッシュから str が見つかりません...保存中」と表示されます

// Check if str found from cache
    if (apc_exists('str')) {
        // Print str from cache
        echo "str from cache: ", apc_fetch('str'), "<br />";
        // Clear cache
        apc_clear_cache('user');
        // Try to fetch str again
        echo "str from cache, after user cache is cleared: ", "<br />";
        var_dump(apc_fetch('str'));
    }
    else {
        // Save str to cache and set ttl 120 seconds
        echo 'str not found from cache...saving', "<br />";
        $str = "This is just test";
        apc_store('str', $str, 120);
    }

私のapc設定は次のとおりです...

apc

APC Support => disabled
Version => 3.1.13
APC Debugging => Disabled
MMAP Support => Enabled
MMAP File Mask =>  
Locking type => pthread read/write Locks
Serialization Support => broken
Revision => $Revision: 327136 $
Build Date => Oct 17 2013 16:47:57

Directive => Local Value => Master Value
apc.cache_by_default => Off => Off
apc.canonicalize => On => On
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.file_md5 => Off => Off
apc.file_update_protection => 2 => 2
apc.filters => no value => no value
apc.gc_ttl => 3600 => 3600
apc.include_once_override => Off => Off
apc.lazy_classes => Off => Off
apc.lazy_functions => Off => Off
apc.max_file_size => 1M => 1M
apc.mmap_file_mask => no value => no value
apc.num_files_hint => 1000 => 1000
apc.preload_path => no value => no value
apc.report_autofilter => Off => Off
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.rfc1867_ttl => 3600 => 3600
apc.serializer => default => default
apc.shm_segments => 1 => 1
apc.shm_size => 512 => 512
apc.shm_strings_buffer => 4M => 4M
apc.slam_defense => Off => Off
apc.stat => On => On
apc.stat_ctime => Off => Off
apc.ttl => 0 => 0
apc.use_request_time => On => On
apc.user_entries_hint => 4096 => 4096
apc.user_ttl => 0 => 0
apc.write_lock => On => On

明らかな何かが欠けているに違いありません.....どんな助けも大歓迎です。ティア

編集

そこで、apcがすでにインストールされているprodサーバーでapcが適切に機能しているかどうかを確認しました。実際、本来あるべきように機能しています。だから私はphp_sapi_name()を実行しました.prodサーバーではapache2handlerであり、devサーバー(現在作業しているもの)ではcgi-fcgiを使用しています。これがおそらく問題の原因です。私はcPanelを使用しているので、PHPの「ハンドラー」をsuPHPからおそらくDSOに変更するだけで、その後は機能するはずです。prodサーバーはcpanelを使用しません。古き良き方法です....えーと.cPanel以外のものを使用して動作させます。

4

2 に答える 2

1

この問題をデバッグするには、APC Web インターフェイスを使用する必要があります。

apc.php というファイルを見つけます

find / -name apc.php

これを www/ フォルダーにコピーして、ブラウザーにロードします。

(これがどのように見えるかの例です: http://andrewdunkle.com/apc.php )

ここで、スクリプトを再試行して、変数が適切に保存され、有効期限が長いことを確認します。また、ページが読み込まれるたびにシステム キャッシュがリセットされるように見えるかどうかをテストします。(APC.php またはその他のスクリプト)。

最後に、apache で worker から prefork に切り替えてみます。(または、プリフォークを使用する場合はその逆)

于 2013-10-17T23:20:28.430 に答える
0

私の質問に答えるこのスレッドを見つけました。根本的な問題は、APC を適切に実行するために DSO/mod_php の下にいる必要があるときに、CGI-FCGI の下で実行していたことです。Cpanelでそれを変更するのは獣でした。なぜなら、phpハンドラーを変更するとapc.so拡張機能が原因で一部が失敗する.... yar.

于 2013-10-21T19:03:48.637 に答える