php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #63552 Phantom page execution, user cache hits chnages to 1 than to 0
Submitted: 2012-11-18 13:22 UTC Modified: 2012-12-15 10:37 UTC
From: andras dot galli at gmail dot com Assigned: ab (profile)
Status: Closed Package: APC (PECL)
PHP Version: 5.4.9 OS: Windows 7 x64
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: andras dot galli at gmail dot com
New email:
PHP Version: OS:

 

 [2012-11-18 13:22 UTC] andras dot galli at gmail dot com
Description:
------------
I’ve been using your php_apc.dll version for php 5.4.8 on a Windows 7 x64 environment, on Apache 2.4 webserver. 
I use log4php to log the script execution, and what i examined, that after a succesfull run of my script, the log entries appear in my log file as they should. When I enable APC, my script log’s every entry twice (I call it phantom run), just like if I’ve run the whole script twice, but I didn’t. 

Also I’ve examined, that my user cached variables shows 0 hits. If the script still runs, the hit count goes up to 1, and on the second fantom run of the script, every hit counts go back to 0. In my log, it appears that on the first script run (which was initiated by me) all values are fetched from the cache, here changes the user cache value hits to 1, and on the phantom run (which initiated by apc I think) my log tels me, that these values are not fetched from but they are stored again. 


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-11-18 13:45 UTC] andras dot galli at gmail dot com
Few more details:
With APC, the wirst script run is correct, it takes 1,1 sec, and the log is correct.
With ACP, a manual second script run takes 2,3 sec, and the log is not correct, it show fist that the values are fetched from the cache, and on the phantom run, that the values are added again.
 [2012-11-18 13:47 UTC] andras dot galli at gmail dot com
LOG file content with of the normal run, without APC:
[14:42:41,425] [127.0.0.1:1780] [App\Engine\Core\DBConnectionBase] [DEBUG] Connecting to MYSQL finished SUCCESSFULLY!
[14:42:41,427] [127.0.0.1:1780] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:42:41,467] [127.0.0.1:1780] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:42:41,467] [127.0.0.1:1780] [App\Engine\Core\DBConnectionBase] [DEBUG] SELECT * FROM fw_Session WHERE 

ID="dbekgckuf75cq158lsvn95uo32" AND IsDeleted=0 AND IsElapsed=0
[14:42:41,468] [127.0.0.1:1780] [App\Engine\MasterPage] [DEBUG] App\Engine\MasterPage created!
[14:42:41,469] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:42:41,469] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] SHOW COLUMNS FROM fw_User
[14:42:41,486] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: No cache initialized!
[14:42:41,487] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: No cache initialized!
[14:42:41,487] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] SELECT * FROM fw_User WHERE ID="12345678" AND 

IsDeleted=0 AND IsActive=1
[14:42:41,487] [127.0.0.1:1780] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: No cache initialized!
[14:42:41,489] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:42:41,490] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] SHOW COLUMNS FROM fw_country
[14:42:41,500] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: No cache initialized!
[14:42:41,500] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: No cache initialized!
[14:42:41,501] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] SELECT * FROM fw_country WHERE IsDeleted=0
[14:42:41,504] [127.0.0.1:1780] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: No cache initialized!
 [2012-11-18 13:50 UTC] andras dot galli at gmail dot com
Log with APC on. From the first 'Connecting to MYSQL finished SUCCESSFULLY!' was initiated by me, from the second is a phantom run of the script.
[14:43:46,779] [127.0.0.1:1788] [App\Engine\Core\DBConnectionBase] [DEBUG] Connecting to MYSQL finished SUCCESSFULLY!
[14:43:46,780] [127.0.0.1:1788] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:46,822] [127.0.0.1:1788] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:46,823] [127.0.0.1:1788] [App\Engine\Core\DBConnectionBase] [DEBUG] SELECT * FROM fw_Session WHERE ID="dbekgckuf75cq158lsvn95uo32" AND IsDeleted=0 AND IsElapsed=0
[14:43:46,825] [127.0.0.1:1788] [App\Engine\MasterPage] [DEBUG] App\Engine\MasterPage created!
[14:43:46,826] [127.0.0.1:1788] [App\Engine\Entities\EntityUser] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:46,826] [127.0.0.1:1788] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_Field retreived!
[14:43:46,826] [127.0.0.1:1788] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_FieldTypes retreived!
[14:43:46,826] [127.0.0.1:1788] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_ID12345678 retreived!
[14:43:46,830] [127.0.0.1:1788] [App\Engine\Entities\EntityCountry] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:46,830] [127.0.0.1:1788] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_Field retreived!
[14:43:46,831] [127.0.0.1:1788] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_FieldTypes retreived!
[14:43:46,831] [127.0.0.1:1788] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_List retreived!
[14:43:49,775] [127.0.0.1:1793] [App\Engine\Core\DBConnectionBase] [DEBUG] Connecting to MYSQL finished SUCCESSFULLY!
[14:43:49,777] [127.0.0.1:1793] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:49,836] [127.0.0.1:1793] [App\Engine\Core\DBConnectionBase] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:49,836] [127.0.0.1:1793] [App\Engine\Core\DBConnectionBase] [DEBUG] SELECT * FROM fw_Session WHERE ID="dbekgckuf75cq158lsvn95uo32" AND IsDeleted=0 AND IsElapsed=0
[14:43:49,837] [127.0.0.1:1793] [App\Engine\MasterPage] [DEBUG] App\Engine\MasterPage created!
[14:43:49,838] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:49,838] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] SHOW COLUMNS FROM fw_User
[14:43:49,855] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_Field added!
[14:43:49,855] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_FieldTypes added!
[14:43:49,855] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] SELECT * FROM fw_User WHERE ID="12345678" AND IsDeleted=0 AND IsActive=1
[14:43:49,856] [127.0.0.1:1793] [App\Engine\Entities\EntityUser] [DEBUG] APCCache: fw_User_ID12345678 added!
[14:43:49,858] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] App\Engine\Core\DBConnectionBase created!
[14:43:49,858] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] SHOW COLUMNS FROM fw_country
[14:43:49,869] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_Field added!
[14:43:49,869] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_FieldTypes added!
[14:43:49,869] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] SELECT * FROM fw_country WHERE IsDeleted=0
[14:43:49,873] [127.0.0.1:1793] [App\Engine\Entities\EntityCountry] [DEBUG] APCCache: fw_country_List added!
 [2012-11-18 21:47 UTC] andras dot galli at gmail dot com
Also if I check the result with apache's tool called ab.exe, for the first request, i get everything back twice, just like the script runs twice...
 [2012-11-18 21:58 UTC] andras dot galli at gmail dot com
Found some info:
If php_apc.dll is enabled as an extension, somehow it forces Apache 2.4 to restart, so apache restarts itself for some reason... No error code found in the error log of Apache
 [2012-12-12 08:14 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2012-12-12 08:14 UTC] ab@php.net
Have you checked your logging settings (not that something logs redundant)? With 
the cache hits - please post your apc ini.
 [2012-12-12 14:52 UTC] andras dot galli at gmail dot com
APC had run with the following php.ini values, but the configuration did not affected the apache restart, if APC was enabled in php.ini (not with, apc.enabled, but the .dll was loaded as an extension), apache restarts.

; [APC]
; apc.enabled = 1
; apc.shm_segments = 1
; apc.shm_size = 64M
; apc.optimization = 0
; apc.num_files_hint = 1000
; apc.ttl = 0
; apc.gc_ttl = 3600
; apc.cache_by_default = On
; apc.slam_defense = 0
; apc.file_update_protection = 2
; apc.enable_cli = 0
; apc.stat=1
 [2012-12-12 15:34 UTC] andras dot galli at gmail dot com
Also PHP runs as an Apache module, not in fastcgi mode.
 [2012-12-12 15:34 UTC] andras dot galli at gmail dot com
-Status: Feedback +Status: Open
 [2012-12-12 16:36 UTC] ab@php.net
The config looks ok, store and fetch should work. But since you say apache 
restarts, this is obviously the reason why the storage is reset.

Ff there is a crash, it should be in the error logs. How to get a backtrace 
please read here https://bugs.php.net/bugs-generating-backtrace-win32.php . You 
could attach the windbg tool to the apache process or run "httpd -X" so apache 
don't daemonize.

You didn't say which APC version you use, here's a build for nearly current 
trunk http://windows.php.net/downloads/pecl/snaps/apc/3.1.14-dev/ , please try.

What you also could do - the current test snaps deliver apache sapi dll built by 
windows php team http://windows.php.net/downloads/snaps/php-5.4/r2d1694d/php-
5.4-ts-windows-vc9-x86-r2d1694d.zip , you could try that.
 [2012-12-12 16:48 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2012-12-12 21:06 UTC] andras dot galli at gmail dot com
APC version 3.1.13, but i've tried it with 3.1.10. Since than I've updated my PHP version to 5.4.9.
I've created a windbg error report. It's 0.5 MB. Can I send it to your email address?
 [2012-12-12 21:06 UTC] andras dot galli at gmail dot com
-Status: Feedback +Status: Open
 [2012-12-12 21:20 UTC] andras dot galli at gmail dot com
Thread 67 - System ID 1272
Entry point   0x00000000 
Create time   2012.12.12. 22:16:02 
Time spent in user mode   0 Days 00:00:00.00 
Time spent in kernel mode   0 Days 00:00:00.00 




Function   Source 
user32!NtUserGetMessage+15    
user32!GetMessageA+a1    
php5ts!timeout_thread_proc+a5   c:\php-sdk\php54dev\vc9\x86\php-5.4.9-ts\zend\zend_execute_api.c @ 1425 + f 
msvcr90!_endthreadex+44    
msvcr90!_endthreadex+d8    
kernel32!BaseThreadInitThunk+e    
ntdll!__RtlUserThreadStart+70    
ntdll!_RtlUserThreadStart+1b
 [2012-12-12 21:21 UTC] andras dot galli at gmail dot com
Exception Information
PHP5TS!ZEND_FETCH_VAR_ADDRESS_HELPER_SPEC_CONST_VAR+82In httpd__PID__5104__Date__12_12_2012__Time_10_18_44PM__746__Second_Chance_Exception_C0000005.dmp the assembly instruction at php5ts!zend_fetch_var_address_helper_SPEC_CONST_VAR+82 in C:\php-5.4.8\php5ts.dll from The PHP Group has caused an access violation exception (0xC0000005) when trying to read from memory location 0x00000000 on thread 4





Module Information 
Image Name: C:\php-5.4.8\php5ts.dll   Symbol Type:  PDB 
Base address: 0x00905a4d   Time Stamp:  Wed Nov 21 21:21:06 2012  
Checksum: 0x00000056   Comments:   
COM DLL: False   Company Name:  The PHP Group 
ISAPIExtension: False   File Description:  PHP Script Interpreter 
ISAPIFilter: False   File Version:  5.4.9 
Managed DLL: False   Internal Name:  PHP Script Interpreter 
VB DLL: False   Legal Copyright:  Copyright © 1997-2012 The PHP Group 
Loaded Image Name:  php5ts.dll   Legal Trademarks:  PHP 
Mapped Image Name:     Original filename:  php5ts.dll 
Module name:  php5ts   Private Build:   
Single Threaded:  False   Product Name:  PHP 
Module Size:  5,92 MBytes   Product Version:  5.4.9 
Symbol File Name:  d:\!install\php\php-debug-pack-5.4.9-win32-vc9-x86\php5ts.pdb   Special Build:  &
 [2012-12-12 21:39 UTC] andras dot galli at gmail dot com
I've also tried the 3.1.14-dev APC version, with the same result.
 [2012-12-12 21:39 UTC] andras dot galli at gmail dot com
-PHP Version: 5.4.8 +PHP Version: 5.4.9
 [2012-12-13 08:06 UTC] ab@php.net
Would be better if you'd share that report somewhere, but you also could send it 
- hope my mail box will swallow it. The most interesting part is the BT one. And 
just to be clear - so you use apache binaries and mod php from apache lounge?
 [2012-12-13 08:06 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2012-12-13 20:25 UTC] andras dot galli at gmail dot com
-Status: Feedback +Status: Open
 [2012-12-13 20:25 UTC] andras dot galli at gmail dot com
Yes, i'm using binaries from Apache Lounge. (Apache 2.4.3, and also tried with Apache 2.2 from the main Apache site).
I've uploaded the report, you can download it from here:
http://www.hhdss.com/Reports.rar

Hopefully it contains everything, if not, please tell what else do you need!
 [2012-12-14 09:37 UTC] ab@php.net
Hi,

many thanks for the reports. It might be related to bug #63669, though not sure. 
Anyway it looks like default class properties/constants. In the reports it 
crashes in the php5ts.dll, but that may very well be caused by something in APC 
(though there is nothing about APC in the trace).

The next step is to figure out which PHP code is causing this. Please play with 
your app and try to extract a short piece of code. I'll try that as well, will 
look also for similar tickets.

Also what you could do - we produce the apache 2.4 sapi dll already in the 
snaps, you could try one of the latest from here 
http://windows.php.net/downloads/snaps/php-5.4/ . There are debug packs as well.  
May be you can get more meaningful traces with that. Please be sure using apache 
built with openssl 0.9.8x if you do that.

Thanks.
 [2012-12-14 09:37 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2012-12-14 09:54 UTC] ab@php.net
Actually you MUST use the official PHP builds in order we can properly debug 
that. If you don't want to try the snaps, all the 5.4 releases have 2.2 apache 
handler. So please use the apache VC9/openssl 0.9.8x from the apachelounge and 
the official PHP build. Just to reduce the incompatibility errors.
 [2012-12-14 20:08 UTC] andras dot galli at gmail dot com
The error was related to the following class. The session handling for some reason didn't worked correctly.  It reads and writes the data to the session, and for some reason it generated an exception. I couldn't found the exact code part, so i've copyed the full class to here:

<?php
 
/**
 * SessionDBHandler
 * 
 * @package framework 
 * @author Andras andras@iwshungary.com
 * @copyright 2012 IWSHungary.com
 * @version 1.0  
 * @access public
 */
class SessionDBHandler extends BaseClass {
    public $sessionDB;
    public $configuration;
    
    /**
     * SessionHandlerObject::__construct()
     * Creates the SessionHandlerObject and sets the required variables in the php.ini
     * @return
     */
    function __construct($parent, $configuration){
        parent::__construct($parent);
        
        $this->configuration = $configuration;
        
        ini_set("session.gc_maxlifetime", "7200");
        ini_set("session.cache_expire", "360");
        ini_set("session.cookie_lifetime", "0");
        
        session_module_name('user');
        session_set_save_handler(array($this, 'SessionOpen'), 
                                 array($this, 'SessionClose'), 
                                 array($this, 'SessionRead'),
                                 array($this, 'SessionWrite'), 
                                 array($this, 'SessionRemove'), 
                                 array($this, 'SessionGC'));
        session_start();
    }
    
    public static function RemoveItem($itemName) {
        unset($_SESSION[$itemName]);
    }
    
    public static function ResetSession() {
        session_start();
        session_unset();
        session_destroy();
        session_write_close();
        setcookie(session_name(),'',0,'/');
        session_regenerate_id(true);
    }
    
    /**
     * SessionHandlerObject::GetItem()
     * Gets a session item
     * @param mixed $itemName
     * @return
     */
    public static function GetItem($itemName) {
        if(isset($_SESSION[$itemName])){
            return $_SESSION[$itemName];
        } else {
            return null;
        }
    }
    
    /**
     * SessionHandlerObject::GetSession()
     * Get's the whole session array
     * @return
     */
    public static function GetSession() {
        return $_SESSION;
    }
    
    /**
     * SessionHandlerObject::IsSetAlready()
     * Checks whether the variable is set or not in the session array
     * @param mixed $itemName
     * @return
     */
    public static function IsSetAlready($itemName) {
        return isset($_SESSION[$itemName]);
    }
    
    /**
     * SessionHandlerObject::SetItem()
     * Sets a new or updates an old session value
     * @param mixed $itemName
     * @param mixed $newValue
     * @return
     */
    public static function SetItem($itemName, $newValue){
        $_SESSION[$itemName] = $newValue;
    }
    
    /**
     * SessionHandlerObject::GetSessionID()
     * Get's the session ID
     * @return
     */
    public static function GetSessionID() {
        return session_id();
    }
    
        
    /**
     * SessionFunctions::SessionOpen()
     * 
     * @return
     */
    public function SessionOpen() {
        $this->sessionDB = new DBConnectionBase(null,
                                                $this->configuration->DatabaseType,
                                                $this->configuration->ApplicationWorkingMode,
                                                $this->configuration->FrameworkDatabaseDBName,
                                                $this->configuration->FrameworkDatabaseUserName,
                                                $this->configuration->FrameworkDatabasePassword,
                                                $this->configuration->FrameworkDatabaseHost,
                                                $this->configuration->FrameworkDatabasePort);  
        return true;
    }
    
    /**
     * SessionFunctions::SessionClose()
     * 
     * @return
     */
    public function SessionClose() {
        return true;
    }
    
    /**
     * SessionFunctions::SessionRead()
     * 
     * @param mixed $sessionID
     * @return
     */
    public function SessionRead($sessionID) {
        $sql = 'SELECT * FROM fw_Session WHERE ID="' . $sessionID . '" AND IsDeleted=0 AND IsElapsed=0';
        if( ! $result = $this->sessionDB->ExecuteQuery($sql)) {
            return("");
        } else {
            if ( $result->num_rows > 0 ) {
                $row = $this->sessionDB->FetchAssoc($result);
                return($row["Data"]);
            } else {
                return("");
            } 
        }
    }
    
    /**
     * SessionFunctions::SessionWrite()
     * 
     * @param mixed $sessionID
     * @param mixed $data
     * @return
     */
    public function SessionWrite($sessionID, $data) {
        $sql = 'SELECT Data FROM fw_Session WHERE ID="' . $sessionID . '" AND IsDeleted=0 AND IsElapsed=0';
        $current = $this->sessionDB->ExecuteQuery($sql);
        //Updating the session record
        if ( $current->num_rows > 0 ) { 
            $current_data = $this->sessionDB->FetchAssoc($current);
       
            if ( $current_data['Data'] <> $data ) {
                
                $updateSQL = "UPDATE fw_Session SET Data='" . $data . "' WHERE ID='" . $sessionID . "' AND IsDeleted=0 AND IsElapsed=0";
                if ( ! $this->sessionDB->ExecuteQuery($updateSQL) ) {
                    return(false);
                } else {
                    return(true);
                }
            } 
        } else {
        //Inserting a new session record
            $insertSQL = "INSERT INTO fw_Session ( ID, Time, Data, IsDeleted, IsElapsed ) VALUES ( '" . $sessionID . "', " . time() . ", '" . $data . "', 0, 0 )";
            //echo $insertSQL; 
            if ( ! $this->sessionDB->ExecuteQuery($insertSQL) ) {
                return(false);
            } else {
                return(true);
            }
        }
        $this->sessionDB->FlushData();
    }
    
    /**
     * SessionFunctions::SessionRemove()
     * 
     * @param mixed $sessionID
     * @return
     */
    public function SessionRemove($sessionID) {
        $removeSQL = 'UPDATE fw_Session SET IsDeleted=1 WHERE ID="' . $sessionID . '" AND IsDeleted=0';
        if ( ! $this->sessionDB->ExecuteQuery($removeSQL) ) {
            return(false);
        } else {
            return(true);
        }
        $this->sessionDB->FlushData();
    }
    
    /**
     * SessionFunctions::SessionGC()
     * 
     * @param mixed $lifeTime
     * @return
     */
    public function SessionGC($lifeTime) {
        $GCSQL = 'UPDATE fw_Session SET IsElapsed=1, IsDeleted=1 WHERE Time < "' . date("YmdHis", time() - $lifeTime) . '" AND IsElapsed=0 AND IsDeleted=0';
        if ( ! $this->sessionDB->ExecuteQuery($GCSQL) ) {
            return(false);
        } else {
            return(true);
        }
        $this->sessionDB->FlushData();
    }
}

?>
 [2012-12-14 20:08 UTC] andras dot galli at gmail dot com
-Status: Feedback +Status: Open
 [2012-12-15 01:31 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2012-12-15 01:31 UTC] ab@php.net
The session module is known to be not very good with APC. It's because of the 
module unload order. The solution is to add a session_write_close() call 
somewhere in your app where you know the session isn't needed anymore. Or you 
could use the php.auto_append_option with a file containing this call.
 [2012-12-15 01:32 UTC] ab@php.net
php.auto_append_file i mean )
 [2012-12-15 09:12 UTC] andras dot galli at gmail dot com
Well, I've created the class on a different way. I've created a new class that implements SessionHandlerInterface, and added this class to the session_set_save_handler(). With this solution both the session handling and the APC works correctly.
 [2012-12-15 09:12 UTC] andras dot galli at gmail dot com
-Status: Feedback +Status: Open
 [2012-12-15 10:37 UTC] ab@php.net
ordinary chicken/egg issue solved )
 [2012-12-15 10:37 UTC] ab@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: ab
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Apr 24 04:01:30 2024 UTC