@@ -2421,6 +2421,17 @@ int accel_activate(INIT_FUNC_ARGS)
2421
2421
}
2422
2422
2423
2423
zend_shared_alloc_restore_state ();
2424
+ if (ZCSG (preload_script )) {
2425
+ zend_accel_hash_update (& ZCSG (hash ), ZSTR_VAL (ZCSG (preload_script )-> script .filename ), ZSTR_LEN (ZCSG (preload_script )-> script .filename ), 0 , ZCSG (preload_script ));
2426
+ if (ZCSG (saved_scripts )) {
2427
+ zend_persistent_script * * p = ZCSG (saved_scripts );
2428
+ while (* p ) {
2429
+ zend_accel_hash_update (& ZCSG (hash ), ZSTR_VAL ((* p )-> script .filename ), ZSTR_LEN ((* p )-> script .filename ), 0 , * p );
2430
+ p ++ ;
2431
+ }
2432
+ }
2433
+ ZCSG (map_ptr_last ) = ZCSG (saved_map_ptr_last );
2434
+ }
2424
2435
ZCSG (accelerator_enabled ) = ZCSG (cache_status_before_restart );
2425
2436
if (ZCSG (last_restart_time ) < ZCG (request_time )) {
2426
2437
ZCSG (last_restart_time ) = ZCG (request_time );
@@ -3616,6 +3627,7 @@ static int accel_preload(const char *config)
3616
3627
if (ret == SUCCESS ) {
3617
3628
zend_persistent_script * script ;
3618
3629
zend_string * filename ;
3630
+ int i ;
3619
3631
3620
3632
preload_link ();
3621
3633
preload_remove_empty_includes ();
@@ -3704,13 +3716,24 @@ static int accel_preload(const char *config)
3704
3716
EG (persistent_classes_count ) = EG (class_table )-> nNumUsed ;
3705
3717
3706
3718
/* Store individual scripts with unlinked classes */
3719
+ HANDLE_BLOCK_INTERRUPTIONS ();
3720
+ SHM_UNPROTECT ();
3721
+
3722
+ i = 0 ;
3723
+ zend_shared_alloc_lock ();
3724
+ ZCSG (saved_scripts ) = zend_shared_alloc ((zend_hash_num_elements (preload_scripts ) + 1 ) * sizeof (void * ));
3725
+ zend_shared_alloc_unlock ();
3707
3726
ZEND_HASH_FOREACH_PTR (preload_scripts , script ) {
3708
- HANDLE_BLOCK_INTERRUPTIONS ();
3709
- SHM_UNPROTECT ();
3710
- preload_script_in_shared_memory (script );
3711
- SHM_PROTECT ();
3712
- HANDLE_UNBLOCK_INTERRUPTIONS ();
3727
+ ZCSG (saved_scripts )[i ++ ] = preload_script_in_shared_memory (script );
3713
3728
} ZEND_HASH_FOREACH_END ();
3729
+ ZCSG (saved_scripts )[i ] = NULL ;
3730
+
3731
+ ZCSG (saved_map_ptr_last ) = ZCSG (map_ptr_last );
3732
+ zend_shared_alloc_save_state ();
3733
+ accel_interned_strings_save_state ();
3734
+
3735
+ SHM_PROTECT ();
3736
+ HANDLE_UNBLOCK_INTERRUPTIONS ();
3714
3737
3715
3738
zend_shared_alloc_destroy_xlat_table ();
3716
3739
}
0 commit comments