Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
php
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Eric Zillmann
php
Commits
a33af38f
Commit
a33af38f
authored
7 years ago
by
jurgenhaas
Browse files
Options
Downloads
Patches
Plain Diff
#7 Update apc.php for PHP 7 and APCu
parent
d13b1aab
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
files/apc.php
+132
-348
132 additions, 348 deletions
files/apc.php
with
132 additions
and
348 deletions
files/apc.php
+
132
−
348
View file @
a33af38f
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
*/
*/
$VERSION
=
'$Id
: apc.php 307048 2011-01-03 23:53:17Z kalle
$'
;
$VERSION
=
'$Id$'
;
////////// READ OPTIONAL CONFIGURATION FILE ////////////
////////// READ OPTIONAL CONFIGURATION FILE ////////////
if
(
file_exists
(
"apc.conf.php"
))
include
(
"apc.conf.php"
);
if
(
file_exists
(
"apc.conf.php"
))
include
(
"apc.conf.php"
);
...
@@ -30,10 +30,10 @@ if (file_exists("apc.conf.php")) include("apc.conf.php");
...
@@ -30,10 +30,10 @@ if (file_exists("apc.conf.php")) include("apc.conf.php");
////////// BEGIN OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////
////////// BEGIN OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////
defaults
(
'USE_AUTHENTICATION'
,
1
);
// Use (internal) authentication - best choice if
defaults
(
'USE_AUTHENTICATION'
,
1
);
// Use (internal) authentication - best choice if
// no other authentication is available
// no other authentication is available
// If set to 0:
// If set to 0:
// There will be no further authentication. You
// There will be no further authentication. You
// will have to handle this by yourself!
// will have to handle this by yourself!
// If set to 1:
// If set to 1:
// You need to change ADMIN_PASSWORD to make
// You need to change ADMIN_PASSWORD to make
...
@@ -41,7 +41,7 @@ defaults('USE_AUTHENTICATION',1); // Use (internal) authentication - best choi
...
@@ -41,7 +41,7 @@ defaults('USE_AUTHENTICATION',1); // Use (internal) authentication - best choi
defaults
(
'ADMIN_USERNAME'
,
'apc'
);
// Admin Username
defaults
(
'ADMIN_USERNAME'
,
'apc'
);
// Admin Username
defaults
(
'ADMIN_PASSWORD'
,
'password'
);
// Admin Password - CHANGE THIS TO ENABLE!!!
defaults
(
'ADMIN_PASSWORD'
,
'password'
);
// Admin Password - CHANGE THIS TO ENABLE!!!
// (beckerr) I'm using a clear text password here, because I've no good idea how to let
// (beckerr) I'm using a clear text password here, because I've no good idea how to let
// users generate a md5 or crypt password in a easy way to fill it in above
// users generate a md5 or crypt password in a easy way to fill it in above
//defaults('DATE_FORMAT', "d.m.Y H:i:s"); // German
//defaults('DATE_FORMAT', "d.m.Y H:i:s"); // German
...
@@ -71,10 +71,8 @@ if (isset($_SERVER['SERVER_ADDR'])) {
...
@@ -71,10 +71,8 @@ if (isset($_SERVER['SERVER_ADDR'])) {
// operation constants
// operation constants
define
(
'OB_HOST_STATS'
,
1
);
define
(
'OB_HOST_STATS'
,
1
);
define
(
'OB_SYS_CACHE'
,
2
);
define
(
'OB_USER_CACHE'
,
2
);
define
(
'OB_USER_CACHE'
,
3
);
define
(
'OB_VERSION_CHECK'
,
3
);
define
(
'OB_SYS_CACHE_DIR'
,
4
);
define
(
'OB_VERSION_CHECK'
,
9
);
// check validity of input variables
// check validity of input variables
$vardom
=
array
(
$vardom
=
array
(
...
@@ -91,12 +89,9 @@ $vardom=array(
...
@@ -91,12 +89,9 @@ $vardom=array(
'SORT1'
=>
'/^[AHSMCDTZ]$/'
,
// first sort key
'SORT1'
=>
'/^[AHSMCDTZ]$/'
,
// first sort key
'SORT2'
=>
'/^[DA]$/'
,
// second sort key
'SORT2'
=>
'/^[DA]$/'
,
// second sort key
'AGGR'
=>
'/^\d+$/'
,
// aggregation by dir level
'AGGR'
=>
'/^\d+$/'
,
// aggregation by dir level
'SEARCH'
=>
'~^[a-zA-Z0-
1
/_.-]*$~'
// aggregation by dir level
'SEARCH'
=>
'~^[a-zA-Z0-
9
/_.-]*$~'
// aggregation by dir level
);
);
// default cache mode
$cache_mode
=
'opcode'
;
// cache scope
// cache scope
$scope_list
=
array
(
$scope_list
=
array
(
'A'
=>
'cache_list'
,
'A'
=>
'cache_list'
,
...
@@ -169,34 +164,30 @@ if (!USE_AUTHENTICATION) {
...
@@ -169,34 +164,30 @@ if (!USE_AUTHENTICATION) {
</body></html>
</body></html>
EOB;
EOB;
exit
;
exit
;
}
else
{
}
else
{
$AUTHENTICATED
=
1
;
$AUTHENTICATED
=
1
;
}
}
}
}
}
}
// select cache mode
if
(
$AUTHENTICATED
&&
$MYREQUEST
[
'OB'
]
==
OB_USER_CACHE
)
{
$cache_mode
=
'user'
;
}
// clear cache
// clear cache
if
(
$AUTHENTICATED
&&
isset
(
$MYREQUEST
[
'CC'
])
&&
$MYREQUEST
[
'CC'
])
{
if
(
$AUTHENTICATED
&&
isset
(
$MYREQUEST
[
'CC'
])
&&
$MYREQUEST
[
'CC'
])
{
apc_clear_cache
(
$cache_mode
);
apc
u
_clear_cache
();
}
}
if
(
$AUTHENTICATED
&&
!
empty
(
$MYREQUEST
[
'DU'
]))
{
if
(
$AUTHENTICATED
&&
!
empty
(
$MYREQUEST
[
'DU'
]))
{
apc_delete
(
$MYREQUEST
[
'DU'
]);
apc
u
_delete
(
$MYREQUEST
[
'DU'
]);
}
}
if
(
!
function_exists
(
'apc_cache_info'
)
||
!
(
$cache
=@
apc_cache_info
(
$cache_mode
))
)
{
if
(
!
function_exists
(
'apc
u
_cache_info'
))
{
echo
"No cache info available. APC does not appear to be running."
;
echo
"No cache info available. APC does not appear to be running."
;
exit
;
exit
;
}
}
$cache
_user
=
apc_cache_info
(
'user'
,
1
);
$cache
=
apc
u
_cache_info
(
);
$mem
=
apc_sma_info
();
if
(
!
$cache
[
'num_hits'
])
{
$cache
[
'num_hits'
]
=
1
;
$time
++
;
}
// Avoid division by 0 errors on a cache clear
$mem
=
apcu_sma_info
();
// don't cache this page
// don't cache this page
//
//
...
@@ -241,7 +232,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -241,7 +232,7 @@ if (isset($MYREQUEST['IMG']))
$r
=
$diameter
/
2
;
$r
=
$diameter
/
2
;
$w
=
deg2rad
((
360
+
$start
+
(
$end
-
$start
)
/
2
)
%
360
);
$w
=
deg2rad
((
360
+
$start
+
(
$end
-
$start
)
/
2
)
%
360
);
if
(
function_exists
(
"imagefilledarc"
))
{
if
(
function_exists
(
"imagefilledarc"
))
{
// exists only if GD 2.0.1 is avaliable
// exists only if GD 2.0.1 is avaliable
imagefilledarc
(
$im
,
$centerX
+
1
,
$centerY
+
1
,
$diameter
,
$diameter
,
$start
,
$end
,
$color1
,
IMG_ARC_PIE
);
imagefilledarc
(
$im
,
$centerX
+
1
,
$centerY
+
1
,
$diameter
,
$diameter
,
$start
,
$end
,
$color1
,
IMG_ARC_PIE
);
...
@@ -258,13 +249,13 @@ if (isset($MYREQUEST['IMG']))
...
@@ -258,13 +249,13 @@ if (isset($MYREQUEST['IMG']))
if
(
$text
)
{
if
(
$text
)
{
if
(
$placeindex
>
0
)
{
if
(
$placeindex
>
0
)
{
imageline
(
$im
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$diameter
,
$placeindex
*
12
,
$color1
);
imageline
(
$im
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$diameter
,
$placeindex
*
12
,
$color1
);
imagestring
(
$im
,
4
,
$diameter
,
$placeindex
*
12
,
$text
,
$color1
);
imagestring
(
$im
,
4
,
$diameter
,
$placeindex
*
12
,
$text
,
$color1
);
}
else
{
}
else
{
imagestring
(
$im
,
4
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$text
,
$color1
);
imagestring
(
$im
,
4
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$text
,
$color1
);
}
}
}
}
}
}
function
text_arc
(
$im
,
$centerX
,
$centerY
,
$diameter
,
$start
,
$end
,
$color1
,
$text
,
$placeindex
=
0
)
{
function
text_arc
(
$im
,
$centerX
,
$centerY
,
$diameter
,
$start
,
$end
,
$color1
,
$text
,
$placeindex
=
0
)
{
$r
=
$diameter
/
2
;
$r
=
$diameter
/
2
;
...
@@ -272,13 +263,13 @@ if (isset($MYREQUEST['IMG']))
...
@@ -272,13 +263,13 @@ if (isset($MYREQUEST['IMG']))
if
(
$placeindex
>
0
)
{
if
(
$placeindex
>
0
)
{
imageline
(
$im
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$diameter
,
$placeindex
*
12
,
$color1
);
imageline
(
$im
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$diameter
,
$placeindex
*
12
,
$color1
);
imagestring
(
$im
,
4
,
$diameter
,
$placeindex
*
12
,
$text
,
$color1
);
imagestring
(
$im
,
4
,
$diameter
,
$placeindex
*
12
,
$text
,
$color1
);
}
else
{
}
else
{
imagestring
(
$im
,
4
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$text
,
$color1
);
imagestring
(
$im
,
4
,
$centerX
+
$r
*
cos
(
$w
)
/
2
,
$centerY
+
$r
*
sin
(
$w
)
/
2
,
$text
,
$color1
);
}
}
}
}
function
fill_box
(
$im
,
$x
,
$y
,
$w
,
$h
,
$color1
,
$color2
,
$text
=
''
,
$placeindex
=
''
)
{
function
fill_box
(
$im
,
$x
,
$y
,
$w
,
$h
,
$color1
,
$color2
,
$text
=
''
,
$placeindex
=
''
)
{
global
$col_black
;
global
$col_black
;
$x1
=
$x
+
$w
-
1
;
$x1
=
$x
+
$w
-
1
;
...
@@ -290,15 +281,15 @@ if (isset($MYREQUEST['IMG']))
...
@@ -290,15 +281,15 @@ if (isset($MYREQUEST['IMG']))
imagerectangle
(
$im
,
$x
,
$y1
,
$x1
,
$y
,
$color1
);
imagerectangle
(
$im
,
$x
,
$y1
,
$x1
,
$y
,
$color1
);
if
(
$text
)
{
if
(
$text
)
{
if
(
$placeindex
>
0
)
{
if
(
$placeindex
>
0
)
{
if
(
$placeindex
<
16
)
if
(
$placeindex
<
16
)
{
{
$px
=
5
;
$px
=
5
;
$py
=
$placeindex
*
12
+
6
;
$py
=
$placeindex
*
12
+
6
;
imagefilledrectangle
(
$im
,
$px
+
90
,
$py
+
3
,
$px
+
90
-
4
,
$py
-
3
,
$color2
);
imagefilledrectangle
(
$im
,
$px
+
90
,
$py
+
3
,
$px
+
90
-
4
,
$py
-
3
,
$color2
);
imageline
(
$im
,
$x
,
$y
+
$h
/
2
,
$px
+
90
,
$py
,
$color2
);
imageline
(
$im
,
$x
,
$y
+
$h
/
2
,
$px
+
90
,
$py
,
$color2
);
imagestring
(
$im
,
2
,
$px
,
$py
-
6
,
$text
,
$color1
);
imagestring
(
$im
,
2
,
$px
,
$py
-
6
,
$text
,
$color1
);
}
else
{
}
else
{
if
(
$placeindex
<
31
)
{
if
(
$placeindex
<
31
)
{
$px
=
$x
+
40
*
2
;
$px
=
$x
+
40
*
2
;
...
@@ -309,7 +300,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -309,7 +300,7 @@ if (isset($MYREQUEST['IMG']))
}
}
imagefilledrectangle
(
$im
,
$px
,
$py
+
3
,
$px
-
4
,
$py
-
3
,
$color2
);
imagefilledrectangle
(
$im
,
$px
,
$py
+
3
,
$px
-
4
,
$py
-
3
,
$color2
);
imageline
(
$im
,
$x
+
$w
,
$y
+
$h
/
2
,
$px
,
$py
,
$color2
);
imageline
(
$im
,
$x
+
$w
,
$y
+
$h
/
2
,
$px
,
$py
,
$color2
);
imagestring
(
$im
,
2
,
$px
+
2
,
$py
-
6
,
$text
,
$color1
);
imagestring
(
$im
,
2
,
$px
+
2
,
$py
-
6
,
$text
,
$color1
);
}
}
}
else
{
}
else
{
imagestring
(
$im
,
4
,
$x
+
5
,
$y1
-
16
,
$text
,
$color1
);
imagestring
(
$im
,
4
,
$x
+
5
,
$y1
-
16
,
$text
,
$color1
);
...
@@ -331,7 +322,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -331,7 +322,7 @@ if (isset($MYREQUEST['IMG']))
imagecolortransparent
(
$image
,
$col_white
);
imagecolortransparent
(
$image
,
$col_white
);
switch
(
$MYREQUEST
[
'IMG'
])
{
switch
(
$MYREQUEST
[
'IMG'
])
{
case
1
:
case
1
:
$s
=
$mem
[
'num_seg'
]
*
$mem
[
'seg_size'
];
$s
=
$mem
[
'num_seg'
]
*
$mem
[
'seg_size'
];
$a
=
$mem
[
'avail_mem'
];
$a
=
$mem
[
'avail_mem'
];
...
@@ -342,7 +333,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -342,7 +333,7 @@ if (isset($MYREQUEST['IMG']))
// would expect because we try to visualize any memory fragmentation as well.
// would expect because we try to visualize any memory fragmentation as well.
$angle_from
=
0
;
$angle_from
=
0
;
$string_placement
=
array
();
$string_placement
=
array
();
for
(
$i
=
0
;
$i
<
$mem
[
'num_seg'
];
$i
++
)
{
for
(
$i
=
0
;
$i
<
$mem
[
'num_seg'
];
$i
++
)
{
$ptr
=
0
;
$ptr
=
0
;
$free
=
$mem
[
'block_lists'
][
$i
];
$free
=
$mem
[
'block_lists'
][
$i
];
uasort
(
$free
,
'block_sort'
);
uasort
(
$free
,
'block_sort'
);
...
@@ -369,7 +360,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -369,7 +360,7 @@ if (isset($MYREQUEST['IMG']))
$angle_from
=
$angle_to
;
$angle_from
=
$angle_to
;
$ptr
=
$block
[
'offset'
]
+
$block
[
'size'
];
$ptr
=
$block
[
'offset'
]
+
$block
[
'size'
];
}
}
if
(
$ptr
<
$mem
[
'seg_size'
])
{
// memory at the end
if
(
$ptr
<
$mem
[
'seg_size'
])
{
// memory at the end
$angle_to
=
$angle_from
+
(
$mem
[
'seg_size'
]
-
$ptr
)
/
$s
;
$angle_to
=
$angle_from
+
(
$mem
[
'seg_size'
]
-
$ptr
)
/
$s
;
if
((
$angle_to
+
$fuzz
)
>
1
)
$angle_to
=
1
;
if
((
$angle_to
+
$fuzz
)
>
1
)
$angle_to
=
1
;
fill_arc
(
$image
,
$x
,
$y
,
$size
,
$angle_from
*
360
,
$angle_to
*
360
,
$col_black
,
$col_red
);
fill_arc
(
$image
,
$x
,
$y
,
$size
,
$angle_from
*
360
,
$angle_to
*
360
,
$col_black
,
$col_red
);
...
@@ -382,15 +373,15 @@ if (isset($MYREQUEST['IMG']))
...
@@ -382,15 +373,15 @@ if (isset($MYREQUEST['IMG']))
text_arc
(
$image
,
$x
,
$y
,
$size
,
$angle
[
0
]
*
360
,
$angle
[
1
]
*
360
,
$col_black
,
bsize
(
$s
*
(
$angle
[
1
]
-
$angle
[
0
])));
text_arc
(
$image
,
$x
,
$y
,
$size
,
$angle
[
0
]
*
360
,
$angle
[
1
]
*
360
,
$col_black
,
bsize
(
$s
*
(
$angle
[
1
]
-
$angle
[
0
])));
}
}
break
;
break
;
case
2
:
case
2
:
$s
=
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
];
$s
=
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
];
$a
=
$cache
[
'num_hits'
];
$a
=
$cache
[
'num_hits'
];
fill_box
(
$image
,
30
,
$size
,
50
,
-
$a
*
(
$size
-
21
)
/
$s
,
$col_black
,
$col_green
,
sprintf
(
"%.1f%%"
,
$cache
[
'num_hits'
]
*
100
/
$s
));
fill_box
(
$image
,
30
,
$size
,
50
,
$s
?
(
-
$a
*
(
$size
-
21
)
/
$s
)
:
0
,
$col_black
,
$col_green
,
sprintf
(
"%.1f%%"
,
$s
?
$cache
[
'num_hits'
]
*
100
/
$s
:
0
));
fill_box
(
$image
,
130
,
$size
,
50
,
-
max
(
4
,(
$s
-
$a
)
*
(
$size
-
21
)
/
$s
),
$col_black
,
$col_red
,
sprintf
(
"%.1f%%"
,
$cache
[
'num_misses'
]
*
100
/
$s
));
fill_box
(
$image
,
130
,
$size
,
50
,
$s
?
-
max
(
4
,(
$s
-
$a
)
*
(
$size
-
21
)
/
$s
)
:
0
,
$col_black
,
$col_red
,
sprintf
(
"%.1f%%"
,
$s
?
$cache
[
'num_misses'
]
*
100
/
$s
:
0
));
break
;
break
;
case
3
:
case
3
:
$s
=
$mem
[
'num_seg'
]
*
$mem
[
'seg_size'
];
$s
=
$mem
[
'num_seg'
]
*
$mem
[
'seg_size'
];
$a
=
$mem
[
'avail_mem'
];
$a
=
$mem
[
'avail_mem'
];
...
@@ -400,7 +391,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -400,7 +391,7 @@ if (isset($MYREQUEST['IMG']))
// This block of code creates the bar chart. It is a lot more complex than you
// This block of code creates the bar chart. It is a lot more complex than you
// would expect because we try to visualize any memory fragmentation as well.
// would expect because we try to visualize any memory fragmentation as well.
for
(
$i
=
0
;
$i
<
$mem
[
'num_seg'
];
$i
++
)
{
for
(
$i
=
0
;
$i
<
$mem
[
'num_seg'
];
$i
++
)
{
$ptr
=
0
;
$ptr
=
0
;
$free
=
$mem
[
'block_lists'
][
$i
];
$free
=
$mem
[
'block_lists'
][
$i
];
uasort
(
$free
,
'block_sort'
);
uasort
(
$free
,
'block_sort'
);
...
@@ -423,7 +414,7 @@ if (isset($MYREQUEST['IMG']))
...
@@ -423,7 +414,7 @@ if (isset($MYREQUEST['IMG']))
$y
+=
$h
;
$y
+=
$h
;
$ptr
=
$block
[
'offset'
]
+
$block
[
'size'
];
$ptr
=
$block
[
'offset'
]
+
$block
[
'size'
];
}
}
if
(
$ptr
<
$mem
[
'seg_size'
])
{
// memory at the end
if
(
$ptr
<
$mem
[
'seg_size'
])
{
// memory at the end
$h
=
(
GRAPH_SIZE
-
5
)
*
(
$mem
[
'seg_size'
]
-
$ptr
)
/
$s
;
$h
=
(
GRAPH_SIZE
-
5
)
*
(
$mem
[
'seg_size'
]
-
$ptr
)
/
$s
;
if
(
$h
>
0
)
{
if
(
$h
>
0
)
{
fill_box
(
$image
,
$x
,
$y
,
50
,
$h
,
$col_black
,
$col_red
,
bsize
(
$mem
[
'seg_size'
]
-
$ptr
),
$j
++
);
fill_box
(
$image
,
$x
,
$y
,
50
,
$h
,
$col_black
,
$col_red
,
bsize
(
$mem
[
'seg_size'
]
-
$ptr
),
$j
++
);
...
@@ -431,15 +422,16 @@ if (isset($MYREQUEST['IMG']))
...
@@ -431,15 +422,16 @@ if (isset($MYREQUEST['IMG']))
}
}
}
}
break
;
break
;
case
4
:
$s
=
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
];
case
4
:
$a
=
$cache
[
'num_hits'
];
$s
=
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
];
$a
=
$cache
[
'num_hits'
];
fill_box
(
$image
,
30
,
$size
,
50
,
-
$a
*
(
$size
-
21
)
/
$s
,
$col_black
,
$col_green
,
sprintf
(
"%.1f%%"
,
$cache
[
'num_hits'
]
*
100
/
$s
));
fill_box
(
$image
,
130
,
$size
,
50
,
-
max
(
4
,(
$s
-
$a
)
*
(
$size
-
21
)
/
$s
),
$col_black
,
$col_red
,
sprintf
(
"%.1f%%"
,
$cache
[
'num_misses'
]
*
100
/
$s
));
fill_box
(
$image
,
30
,
$size
,
50
,
$s
?
-
$a
*
(
$size
-
21
)
/
$s
:
0
,
$col_black
,
$col_green
,
sprintf
(
"%.1f%%"
,
$s
?
$cache
[
'num_hits'
]
*
100
/
$s
:
0
));
fill_box
(
$image
,
130
,
$size
,
50
,
$s
?
-
max
(
4
,(
$s
-
$a
)
*
(
$size
-
21
)
/
$s
)
:
0
,
$col_black
,
$col_red
,
sprintf
(
"%.1f%%"
,
$s
?
$cache
[
'num_misses'
]
*
100
/
$s
:
0
));
break
;
break
;
}
}
header
(
"Content-type: image/png"
);
header
(
"Content-type: image/png"
);
imagepng
(
$image
);
imagepng
(
$image
);
exit
;
exit
;
...
@@ -458,7 +450,7 @@ function bsize($s) {
...
@@ -458,7 +450,7 @@ function bsize($s) {
// sortable table header in "scripts for this host" view
// sortable table header in "scripts for this host" view
function
sortheader
(
$key
,
$name
,
$extra
=
''
)
{
function
sortheader
(
$key
,
$name
,
$extra
=
''
)
{
global
$MYREQUEST
,
$MY_SELF_WO_SORT
;
global
$MYREQUEST
,
$MY_SELF_WO_SORT
;
if
(
$MYREQUEST
[
'SORT1'
]
==
$key
)
{
if
(
$MYREQUEST
[
'SORT1'
]
==
$key
)
{
$MYREQUEST
[
'SORT2'
]
=
$MYREQUEST
[
'SORT2'
]
==
'A'
?
'D'
:
'A'
;
$MYREQUEST
[
'SORT2'
]
=
$MYREQUEST
[
'SORT2'
]
==
'A'
?
'D'
:
'A'
;
}
}
...
@@ -466,7 +458,7 @@ function sortheader($key,$name,$extra='') {
...
@@ -466,7 +458,7 @@ function sortheader($key,$name,$extra='') {
}
}
// create menu entry
// create menu entry
function
menu_entry
(
$ob
,
$title
)
{
function
menu_entry
(
$ob
,
$title
)
{
global
$MYREQUEST
,
$MY_SELF
;
global
$MYREQUEST
,
$MY_SELF
;
if
(
$MYREQUEST
[
'OB'
]
!=
$ob
)
{
if
(
$MYREQUEST
[
'OB'
]
!=
$ob
)
{
...
@@ -474,7 +466,7 @@ function menu_entry($ob,$title) {
...
@@ -474,7 +466,7 @@ function menu_entry($ob,$title) {
}
else
if
(
empty
(
$MYREQUEST
[
'SH'
]))
{
}
else
if
(
empty
(
$MYREQUEST
[
'SH'
]))
{
return
"<li><span class=active>
$title
</span></li>"
;
return
"<li><span class=active>
$title
</span></li>"
;
}
else
{
}
else
{
return
"<li><a class=
\"
child_active
\"
href=
\"
$MY_SELF
&OB=
$ob
\"
>
$title
</a></li>"
;
return
"<li><a class=
\"
child_active
\"
href=
\"
$MY_SELF
&OB=
$ob
\"
>
$title
</a></li>"
;
}
}
}
}
...
@@ -514,7 +506,7 @@ function block_sort($array1, $array2)
...
@@ -514,7 +506,7 @@ function block_sort($array1, $array2)
?>
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<html>
<head><title>
APC INFO
<?php
echo
$host
?>
</title>
<head><title>
APC
u
INFO
<?php
echo
$host
?>
</title>
<style>
<!
--
<style>
<!
--
body
{
background
:
white
;
font-size
:
100.01%
;
margin
:
0
;
padding
:
0
;
}
body
{
background
:
white
;
font-size
:
100.01%
;
margin
:
0
;
padding
:
0
;
}
body
,
p
,
td
,
th
,
input
,
submit
{
font-size
:
0.8em
;
font-family
:
arial
,
helvetica
,
sans-serif
;
}
body
,
p
,
td
,
th
,
input
,
submit
{
font-size
:
0.8em
;
font-family
:
arial
,
helvetica
,
sans-serif
;
}
...
@@ -626,8 +618,8 @@ ol.menu a:hover {
...
@@ -626,8 +618,8 @@ ol.menu a:hover {
background
:
rgb
(
193
,
193
,
244
);
background
:
rgb
(
193
,
193
,
244
);
text-decoration
:
none
;
text-decoration
:
none
;
}
}
div
.info
{
div
.info
{
background
:
rgb
(
204
,
204
,
204
);
background
:
rgb
(
204
,
204
,
204
);
border
:
solid
rgb
(
204
,
204
,
204
)
1px
;
border
:
solid
rgb
(
204
,
204
,
204
)
1px
;
...
@@ -700,7 +692,7 @@ div.authneeded {
...
@@ -700,7 +692,7 @@ div.authneeded {
padding
:
2em
;
padding
:
2em
;
text-align
:
center
;
text-align
:
center
;
}
}
input
{
input
{
background
:
rgb
(
153
,
153
,
204
);
background
:
rgb
(
153
,
153
,
204
);
border
:
solid
rgb
(
102
,
102
,
153
)
2px
;
border
:
solid
rgb
(
102
,
102
,
153
)
2px
;
...
@@ -715,35 +707,29 @@ input {
...
@@ -715,35 +707,29 @@ input {
<body>
<body>
<div
class=
"head"
>
<div
class=
"head"
>
<h1
class=
"apc"
>
<h1
class=
"apc"
>
<div
class=
"logo"
><span
class=
"logo"
><a
href=
"http://pecl.php.net/package/APC"
>
APC
</a></span></div>
<div
class=
"logo"
><span
class=
"logo"
><a
href=
"http://pecl.php.net/package/APC
u
"
>
APC
u
</a></span></div>
<div
class=
"nameinfo"
>
Opcode
Cache
</div>
<div
class=
"nameinfo"
>
User
Cache
</div>
</h1>
</h1>
<div
class=
"login"
>
<div
class=
"login"
>
<?php
put_login_link
();
?>
<?php
put_login_link
();
?>
</div>
</div>
<hr
class=
"apc"
>
<hr
class=
"apc"
>
</div>
</div>
<?php
<?php
// Display main Menu
// Display main Menu
echo
<<<EOB
echo
<<<EOB
<ol class=menu>
<ol class=menu>
<li><a href="$MY_SELF&OB={$MYREQUEST['OB']}&SH={$MYREQUEST['SH']}">Refresh Data</a></li>
<li><a href="$MY_SELF&OB={$MYREQUEST['OB']}&SH={$MYREQUEST['SH']}">Refresh Data</a></li>
EOB;
EOB;
echo
echo
menu_entry
(
1
,
'View Host Stats'
),
menu_entry
(
OB_HOST_STATS
,
'View Host Stats'
),
menu_entry
(
2
,
'System Cache Entries'
);
menu_entry
(
OB_USER_CACHE
,
'User Cache Entries'
),
if
(
$AUTHENTICATED
)
{
menu_entry
(
OB_VERSION_CHECK
,
'Version Check'
);
echo
menu_entry
(
4
,
'Per-Directory Entries'
);
}
echo
menu_entry
(
3
,
'User Cache Entries'
),
menu_entry
(
9
,
'Version Check'
);
if
(
$AUTHENTICATED
)
{
if
(
$AUTHENTICATED
)
{
echo
<<<EOB
echo
<<<EOB
<li><a class="aright" href="$MY_SELF&CC=1&OB={$MYREQUEST['OB']}" onClick="javascript:return confirm('Are you sure?');">Clear
$cache_mode
Cache</a></li>
<li><a class="aright" href="$MY_SELF&CC=1&OB={$MYREQUEST['OB']}" onClick="javascript:return confirm('Are you sure?');">Clear Cache</a></li>
EOB;
EOB;
}
}
echo
<<<EOB
echo
<<<EOB
...
@@ -756,14 +742,9 @@ echo <<<EOB
...
@@ -756,14 +742,9 @@ echo <<<EOB
<div class=content>
<div class=content>
EOB;
EOB;
// MAIN SWITCH STATEMENT
// MAIN SWITCH STATEMENT
switch
(
$MYREQUEST
[
'OB'
])
{
switch
(
$MYREQUEST
[
'OB'
])
{
// -----------------------------------------------
// -----------------------------------------------
// Host Stats
// Host Stats
// -----------------------------------------------
// -----------------------------------------------
...
@@ -772,77 +753,58 @@ case OB_HOST_STATS:
...
@@ -772,77 +753,58 @@ case OB_HOST_STATS:
$mem_avail
=
$mem
[
'avail_mem'
];
$mem_avail
=
$mem
[
'avail_mem'
];
$mem_used
=
$mem_size
-
$mem_avail
;
$mem_used
=
$mem_size
-
$mem_avail
;
$seg_size
=
bsize
(
$mem
[
'seg_size'
]);
$seg_size
=
bsize
(
$mem
[
'seg_size'
]);
$req_rate
=
sprintf
(
"%.2f"
,(
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])
/
(
$time
-
$cache
[
'start_time'
]));
$req_rate_user
=
sprintf
(
"%.2f"
,
$cache
[
'num_hits'
]
?
((
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])
/
(
$time
-
$cache
[
'start_time'
]))
:
0
);
$hit_rate
=
sprintf
(
"%.2f"
,(
$cache
[
'num_hits'
])
/
(
$time
-
$cache
[
'start_time'
]));
$hit_rate_user
=
sprintf
(
"%.2f"
,
$cache
[
'num_hits'
]
?
((
$cache
[
'num_hits'
])
/
(
$time
-
$cache
[
'start_time'
]))
:
0
);
$miss_rate
=
sprintf
(
"%.2f"
,(
$cache
[
'num_misses'
])
/
(
$time
-
$cache
[
'start_time'
]));
$miss_rate_user
=
sprintf
(
"%.2f"
,
$cache
[
'num_misses'
]
?
((
$cache
[
'num_misses'
])
/
(
$time
-
$cache
[
'start_time'
]))
:
0
);
$insert_rate
=
sprintf
(
"%.2f"
,(
$cache
[
'num_inserts'
])
/
(
$time
-
$cache
[
'start_time'
]));
$insert_rate_user
=
sprintf
(
"%.2f"
,
$cache
[
'num_inserts'
]
?
((
$cache
[
'num_inserts'
])
/
(
$time
-
$cache
[
'start_time'
]))
:
0
);
$req_rate_user
=
sprintf
(
"%.2f"
,(
$cache_user
[
'num_hits'
]
+
$cache_user
[
'num_misses'
])
/
(
$time
-
$cache_user
[
'start_time'
]));
$apcversion
=
phpversion
(
'apcu'
);
$hit_rate_user
=
sprintf
(
"%.2f"
,(
$cache_user
[
'num_hits'
])
/
(
$time
-
$cache_user
[
'start_time'
]));
$miss_rate_user
=
sprintf
(
"%.2f"
,(
$cache_user
[
'num_misses'
])
/
(
$time
-
$cache_user
[
'start_time'
]));
$insert_rate_user
=
sprintf
(
"%.2f"
,(
$cache_user
[
'num_inserts'
])
/
(
$time
-
$cache_user
[
'start_time'
]));
$apcversion
=
phpversion
(
'apc'
);
$phpversion
=
phpversion
();
$phpversion
=
phpversion
();
$number_files
=
$cache
[
'num_entries'
];
$number_vars
=
$cache
[
'num_entries'
];
$size_files
=
bsize
(
$cache
[
'mem_size'
]);
$size_vars
=
bsize
(
$cache
[
'mem_size'
]);
$number_vars
=
$cache_user
[
'num_entries'
];
$size_vars
=
bsize
(
$cache_user
[
'mem_size'
]);
$i
=
0
;
$i
=
0
;
echo
<<<
EOB
echo
<<<
EOB
<
div
class
=
"info div1"
><
h2
>
General
Cache
Information
</
h2
>
<
div
class
=
"info div1"
><
h2
>
General
Cache
Information
</
h2
>
<
table
cellspacing
=
0
><
tbody
>
<
table
cellspacing
=
0
><
tbody
>
<
tr
class
=
tr
-
0
><
td
class
=
td
-
0
>
APC
Version
</
td
><
td
>
$apcversion
</
td
></
tr
>
<
tr
class
=
tr
-
0
><
td
class
=
td
-
0
>
APC
u
Version
</
td
><
td
>
$apcversion
</
td
></
tr
>
<
tr
class
=
tr
-
1
><
td
class
=
td
-
0
>
PHP
Version
</
td
><
td
>
$phpversion
</
td
></
tr
>
<
tr
class
=
tr
-
1
><
td
class
=
td
-
0
>
PHP
Version
</
td
><
td
>
$phpversion
</
td
></
tr
>
EOB
;
EOB
;
if
(
!
empty
(
$_SERVER
[
'SERVER_NAME'
]))
if
(
!
empty
(
$_SERVER
[
'SERVER_NAME'
]))
echo
"<tr class=tr-0><td class=td-0>APC Host</td><td>
{
$_SERVER
[
'SERVER_NAME'
]
}
$host
</td></tr>
\n
"
;
echo
"<tr class=tr-0><td class=td-0>APC
u
Host</td><td>
{
$_SERVER
[
'SERVER_NAME'
]
}
$host
</td></tr>
\n
"
;
if
(
!
empty
(
$_SERVER
[
'SERVER_SOFTWARE'
]))
if
(
!
empty
(
$_SERVER
[
'SERVER_SOFTWARE'
]))
echo
"<tr class=tr-1><td class=td-0>Server Software</td><td>
{
$_SERVER
[
'SERVER_SOFTWARE'
]
}
</td></tr>
\n
"
;
echo
"<tr class=tr-1><td class=td-0>Server Software</td><td>
{
$_SERVER
[
'SERVER_SOFTWARE'
]
}
</td></tr>
\n
"
;
echo
<<<EOB
echo
<<<EOB
<tr class=tr-0><td class=td-0>Shared Memory</td><td>{$mem['num_seg']} Segment(s) with $seg_size
<tr class=tr-0><td class=td-0>Shared Memory</td><td>{$mem['num_seg']} Segment(s) with $seg_size
<br/> ({$cache['memory_type']} memory
, {$cache['locking_type']} locking
)
<br/> ({$cache['memory_type']} memory)
</td></tr>
</td></tr>
EOB;
EOB;
echo
'<tr class=tr-1><td class=td-0>Start Time</td><td>'
,
date
(
DATE_FORMAT
,
$cache
[
'start_time'
]),
'</td></tr>'
;
echo
'<tr class=tr-1><td class=td-0>Start Time</td><td>'
,
date
(
DATE_FORMAT
,
$cache
[
'start_time'
]),
'</td></tr>'
;
echo
'<tr class=tr-0><td class=td-0>Uptime</td><td>'
,
duration
(
$cache
[
'start_time'
]),
'</td></tr>'
;
echo
'<tr class=tr-0><td class=td-0>Uptime</td><td>'
,
duration
(
$cache
[
'start_time'
]),
'</td></tr>'
;
echo
'<tr class=tr-1><td class=td-0>File Upload Support</td><td>'
,
$cache
[
'file_upload_progress'
],
'</td></tr>'
;
echo
<<<EOB
echo
<<<EOB
</tbody></table>
</tbody></table>
</div>
</div>
<div class="info div1"><h2>File Cache Information</h2>
<div class="info div1"><h2>Cache Information</h2>
<table cellspacing=0><tbody>
<table cellspacing=0>
<tr class=tr-0><td class=td-0>Cached Files</td><td>$number_files ($size_files)</td></tr>
<tbody>
<tr class=tr-1><td class=td-0>Hits</td><td>{$cache['num_hits']}</td></tr>
<tr class=tr-0><td class=td-0>Cached Variables</td><td>$number_vars ($size_vars)</td></tr>
<tr class=tr-0><td class=td-0>Misses</td><td>{$cache['num_misses']}</td></tr>
<tr class=tr-1><td class=td-0>Hits</td><td>{$cache['num_hits']}</td></tr>
<tr class=tr-1><td class=td-0>Request Rate (hits, misses)</td><td>$req_rate cache requests/second</td></tr>
<tr class=tr-0><td class=td-0>Misses</td><td>{$cache['num_misses']}</td></tr>
<tr class=tr-0><td class=td-0>Hit Rate</td><td>$hit_rate cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Request Rate (hits, misses)</td><td>$req_rate_user cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Miss Rate</td><td>$miss_rate cache requests/second</td></tr>
<tr class=tr-0><td class=td-0>Hit Rate</td><td>$hit_rate_user cache requests/second</td></tr>
<tr class=tr-0><td class=td-0>Insert Rate</td><td>$insert_rate cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Miss Rate</td><td>$miss_rate_user cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Cache full count</td><td>{$cache['expunges']}</td></tr>
<tr class=tr-0><td class=td-0>Insert Rate</td><td>$insert_rate_user cache requests/second</td></tr>
</tbody></table>
<tr class=tr-1><td class=td-0>Cache full count</td><td>{$cache['expunges']}</td></tr>
</div>
</tbody>
</table>
<div class="info div1"><h2>User Cache Information</h2>
<table cellspacing=0><tbody>
<tr class=tr-0><td class=td-0>Cached Variables</td><td>$number_vars ($size_vars)</td></tr>
<tr class=tr-1><td class=td-0>Hits</td><td>{$cache_user['num_hits']}</td></tr>
<tr class=tr-0><td class=td-0>Misses</td><td>{$cache_user['num_misses']}</td></tr>
<tr class=tr-1><td class=td-0>Request Rate (hits, misses)</td><td>$req_rate_user cache requests/second</td></tr>
<tr class=tr-0><td class=td-0>Hit Rate</td><td>$hit_rate_user cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Miss Rate</td><td>$miss_rate_user cache requests/second</td></tr>
<tr class=tr-0><td class=td-0>Insert Rate</td><td>$insert_rate_user cache requests/second</td></tr>
<tr class=tr-1><td class=td-0>Cache full count</td><td>{$cache_user['expunges']}</td></tr>
</tbody></table>
</div>
</div>
<div class="info div2"><h2>Runtime Settings</h2><table cellspacing=0><tbody>
<div class="info div2"><h2>Runtime Settings</h2><table cellspacing=0><tbody>
EOB;
EOB;
$j
=
0
;
$j
=
0
;
foreach
(
ini_get_all
(
'apc'
)
as
$k
=>
$v
)
{
foreach
(
ini_get_all
(
'apc
u
'
)
as
$k
=>
$v
)
{
echo
"<tr class=tr-
$j
><td class=td-0>"
,
$k
,
"</td><td>"
,
str_replace
(
','
,
',<br />'
,
$v
[
'local_value'
]),
"</td></tr>
\n
"
;
echo
"<tr class=tr-
$j
><td class=td-0>"
,
$k
,
"</td><td>"
,
str_replace
(
','
,
',<br />'
,
$v
[
'local_value'
]),
"</td></tr>
\n
"
;
$j
=
1
-
$j
;
$j
=
1
-
$j
;
}
}
...
@@ -860,7 +822,7 @@ EOB;
...
@@ -860,7 +822,7 @@ EOB;
<
table
cellspacing
=
0
><
tbody
>
<
table
cellspacing
=
0
><
tbody
>
EOB
;
EOB
;
$size
=
'width='
.
(
GRAPH_SIZE
+
50
)
.
' height='
.
(
GRAPH_SIZE
+
10
);
$size
=
'width='
.
(
GRAPH_SIZE
+
50
)
.
' height='
.
(
GRAPH_SIZE
+
10
);
echo
<<<EOB
echo
<<<EOB
<tr>
<tr>
<td class=td-0>$mem_note</td>
<td class=td-0>$mem_note</td>
<td class=td-1>Hits & Misses</td>
<td class=td-1>Hits & Misses</td>
...
@@ -868,18 +830,18 @@ EOB;
...
@@ -868,18 +830,18 @@ EOB;
EOB;
EOB;
echo
echo
graphics_avail
()
?
graphics_avail
()
?
'<tr>'
.
'<tr>'
.
"<td class=td-0><img alt=
\"\"
$size
src=
\"
$PHP_SELF
?IMG=1&
$time
\"
></td>"
.
"<td class=td-0><img alt=
\"\"
$size
src=
\"
$PHP_SELF
?IMG=1&
$time
\"
></td>"
.
"<td class=td-1><img alt=
\"\"
$size
src=
\"
$PHP_SELF
?IMG=2&
$time
\"
></td></tr>
\n
"
"<td class=td-1><img alt=
\"\"
$size
src=
\"
$PHP_SELF
?IMG=2&
$time
\"
></td></tr>
\n
"
:
""
,
:
""
,
'<tr>'
,
'<tr>'
,
'<td class=td-0><span class="green box"> </span>Free: '
,
bsize
(
$mem_avail
)
.
sprintf
(
" (%.1f%%)"
,
$mem_avail
*
100
/
$mem_size
),
"</td>
\n
"
,
'<td class=td-0><span class="green box"> </span>Free: '
,
bsize
(
$mem_avail
)
.
sprintf
(
" (%.1f%%)"
,
$mem_avail
*
100
/
$mem_size
),
"</td>
\n
"
,
'<td class=td-1><span class="green box"> </span>Hits: '
,
$cache
[
'num_hits'
]
.
sprintf
(
" (%.1f%%)"
,
$cache
[
'num_hits'
]
*
100
/
(
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])),
"</td>
\n
"
,
'<td class=td-1><span class="green box"> </span>Hits: '
,
$cache
[
'num_hits'
]
.
@
sprintf
(
" (%.1f%%)"
,
$cache
[
'num_hits'
]
*
100
/
(
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])),
"</td>
\n
"
,
'</tr>'
,
'</tr>'
,
'<tr>'
,
'<tr>'
,
'<td class=td-0><span class="red box"> </span>Used: '
,
bsize
(
$mem_used
)
.
sprintf
(
" (%.1f%%)"
,
$mem_used
*
100
/
$mem_size
),
"</td>
\n
"
,
'<td class=td-0><span class="red box"> </span>Used: '
,
bsize
(
$mem_used
)
.
sprintf
(
" (%.1f%%)"
,
$mem_used
*
100
/
$mem_size
),
"</td>
\n
"
,
'<td class=td-1><span class="red box"> </span>Misses: '
,
$cache
[
'num_misses'
]
.
sprintf
(
" (%.1f%%)"
,
$cache
[
'num_misses'
]
*
100
/
(
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])),
"</td>
\n
"
;
'<td class=td-1><span class="red box"> </span>Misses: '
,
$cache
[
'num_misses'
]
.
@
sprintf
(
" (%.1f%%)"
,
$cache
[
'num_misses'
]
*
100
/
(
$cache
[
'num_hits'
]
+
$cache
[
'num_misses'
])),
"</td>
\n
"
;
echo
<<<
EOB
echo
<<<
EOB
</
tr
>
</
tr
>
</
tbody
></
table
>
</
tbody
></
table
>
...
@@ -906,7 +868,7 @@ EOB;
...
@@ -906,7 +868,7 @@ EOB;
}
}
$freeseg
+=
count
(
$mem
[
'block_lists'
][
$i
]);
$freeseg
+=
count
(
$mem
[
'block_lists'
][
$i
]);
}
}
if
(
$freeseg
>
1
)
{
if
(
$freeseg
>
1
)
{
$frag
=
sprintf
(
"%.2f%% (%s out of %s in %d fragments)"
,
(
$fragsize
/
$freetotal
)
*
100
,
bsize
(
$fragsize
),
bsize
(
$freetotal
),
$freeseg
);
$frag
=
sprintf
(
"%.2f%% (%s out of %s in %d fragments)"
,
(
$fragsize
/
$freetotal
)
*
100
,
bsize
(
$fragsize
),
bsize
(
$freetotal
),
$freeseg
);
}
else
{
}
else
{
...
@@ -936,7 +898,7 @@ EOB;
...
@@ -936,7 +898,7 @@ EOB;
</tbody></table>
</tbody></table>
</div>
</div>
EOB;
EOB;
break
;
break
;
...
@@ -954,71 +916,13 @@ case OB_USER_CACHE:
...
@@ -954,71 +916,13 @@ case OB_USER_CACHE:
$fieldheading
=
'User Entry Label'
;
$fieldheading
=
'User Entry Label'
;
$fieldkey
=
'info'
;
$fieldkey
=
'info'
;
// -----------------------------------------------
// System Cache Entries
// -----------------------------------------------
case
OB_SYS_CACHE
:
if
(
!
isset
(
$fieldname
))
{
$fieldname
=
'filename'
;
$fieldheading
=
'Script Filename'
;
if
(
ini_get
(
"apc.stat"
))
$fieldkey
=
'inode'
;
else
$fieldkey
=
'filename'
;
}
if
(
!
empty
(
$MYREQUEST
[
'SH'
]))
{
echo
<<<
EOB
<
div
class
=
"info"
><
table
cellspacing
=
0
><
tbody
>
<
tr
><
th
>
Attribute
</
th
><
th
>
Value
</
th
></
tr
>
EOB
;
$m
=
0
;
foreach
(
$scope_list
as
$j
=>
$list
)
{
foreach
(
$cache
[
$list
]
as
$i
=>
$entry
)
{
if
(
md5
(
$entry
[
$fieldkey
])
!=
$MYREQUEST
[
'SH'
])
continue
;
foreach
(
$entry
as
$k
=>
$value
)
{
if
(
!
$AUTHENTICATED
)
{
// hide all path entries if not logged in
$value
=
preg_replace
(
'/^.*(\\/|\\\\)/'
,
'<i><hidden></i>/'
,
$value
);
}
if
(
$k
==
"num_hits"
)
{
$value
=
sprintf
(
"%s (%.2f%%)"
,
$value
,
$value
*
100
/
$cache
[
'num_hits'
]);
}
if
(
$k
==
'deletion_time'
)
{
if
(
!
$entry
[
'deletion_time'
])
$value
=
"None"
;
}
echo
"<tr class=tr-
$m
>"
,
"<td class=td-0>"
,
ucwords
(
preg_replace
(
"/_/"
,
" "
,
$k
)),
"</td>"
,
"<td class=td-last>"
,(
preg_match
(
"/time/"
,
$k
)
&&
$value
!=
'None'
)
?
date
(
DATE_FORMAT
,
$value
)
:
htmlspecialchars
(
$value
,
ENT_QUOTES
,
'UTF-8'
),
"</td>"
,
"</tr>"
;
$m
=
1
-
$m
;
}
if
(
$fieldkey
==
'info'
)
{
echo
"<tr class=tr-
$m
><td class=td-0>Stored Value</td><td class=td-last><pre>"
;
$output
=
var_export
(
apc_fetch
(
$entry
[
$fieldkey
]),
true
);
echo
htmlspecialchars
(
$output
,
ENT_QUOTES
,
'UTF-8'
);
echo
"</pre></td></tr>
\n
"
;
}
break
;
}
}
echo
<<<EOB
</tbody></table>
</div>
EOB;
break
;
}
$cols
=
6
;
$cols
=
6
;
echo
<<<EOB
echo
<<<EOB
<div class=sorting><form>Scope:
<div class=sorting><form>Scope:
<input type=hidden name=OB value={$MYREQUEST['OB']}>
<input type=hidden name=OB value={$MYREQUEST['OB']}>
<select name=SCOPE>
<select name=SCOPE>
EOB;
EOB;
echo
echo
"<option value=A"
,
$MYREQUEST
[
'SCOPE'
]
==
'A'
?
" selected"
:
""
,
">Active</option>"
,
"<option value=A"
,
$MYREQUEST
[
'SCOPE'
]
==
'A'
?
" selected"
:
""
,
">Active</option>"
,
"<option value=D"
,
$MYREQUEST
[
'SCOPE'
]
==
'D'
?
" selected"
:
""
,
">Deleted</option>"
,
"<option value=D"
,
$MYREQUEST
[
'SCOPE'
]
==
'D'
?
" selected"
:
""
,
">Deleted</option>"
,
"</select>"
,
"</select>"
,
...
@@ -1032,7 +936,7 @@ EOB;
...
@@ -1032,7 +936,7 @@ EOB;
"<option value=D"
,
$MYREQUEST
[
'SORT1'
]
==
'D'
?
" selected"
:
""
,
">Deleted at</option>"
;
"<option value=D"
,
$MYREQUEST
[
'SORT1'
]
==
'D'
?
" selected"
:
""
,
">Deleted at</option>"
;
if
(
$fieldname
==
'info'
)
echo
if
(
$fieldname
==
'info'
)
echo
"<option value=D"
,
$MYREQUEST
[
'SORT1'
]
==
'T'
?
" selected"
:
""
,
">Timeout</option>"
;
"<option value=D"
,
$MYREQUEST
[
'SORT1'
]
==
'T'
?
" selected"
:
""
,
">Timeout</option>"
;
echo
echo
'</select>'
,
'</select>'
,
'<select name=SORT2>'
,
'<select name=SORT2>'
,
'<option value=D'
,
$MYREQUEST
[
'SORT2'
]
==
'D'
?
' selected'
:
''
,
'>DESC</option>'
,
'<option value=D'
,
$MYREQUEST
[
'SORT2'
]
==
'D'
?
' selected'
:
''
,
'>DESC</option>'
,
...
@@ -1081,16 +985,17 @@ EOB;
...
@@ -1081,16 +985,17 @@ EOB;
// builds list with alpha numeric sortable keys
// builds list with alpha numeric sortable keys
//
//
$list
=
array
();
$list
=
array
();
foreach
(
$cache
[
$scope_list
[
$MYREQUEST
[
'SCOPE'
]]]
as
$i
=>
$entry
)
{
foreach
(
$cache
[
$scope_list
[
$MYREQUEST
[
'SCOPE'
]]]
as
$i
=>
$entry
)
{
switch
(
$MYREQUEST
[
'SORT1'
])
{
switch
(
$MYREQUEST
[
'SORT1'
])
{
case
'A'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'access_time'
]);
break
;
case
'A'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'access_time'
]);
break
;
case
'H'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'num_hits'
]);
break
;
case
'H'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'num_hits'
]);
break
;
case
'Z'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'mem_size'
]);
break
;
case
'Z'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'mem_size'
]);
break
;
case
'M'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'mtime'
]);
break
;
case
'M'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'mtime'
]);
break
;
case
'C'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'creation_time'
]);
break
;
case
'C'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'creation_time'
]);
break
;
case
'T'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'ttl'
]);
break
;
case
'T'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'ttl'
]);
break
;
case
'D'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'deletion_time'
]);
break
;
case
'D'
:
$k
=
sprintf
(
'%015d-'
,
$entry
[
'deletion_time'
]);
break
;
case
'S'
:
$k
=
''
;
break
;
case
'S'
:
$k
=
$entry
[
"info"
];
break
;
}
}
if
(
!
$AUTHENTICATED
)
{
if
(
!
$AUTHENTICATED
)
{
// hide all path entries if not logged in
// hide all path entries if not logged in
...
@@ -1101,22 +1006,22 @@ EOB;
...
@@ -1101,22 +1006,22 @@ EOB;
}
}
if
(
$list
)
{
if
(
$list
)
{
// sort list
// sort list
//
//
switch
(
$MYREQUEST
[
'SORT2'
])
{
switch
(
$MYREQUEST
[
'SORT2'
])
{
case
"A"
:
krsort
(
$list
);
break
;
case
"A"
:
krsort
(
$list
);
break
;
case
"D"
:
ksort
(
$list
);
break
;
case
"D"
:
ksort
(
$list
);
break
;
}
}
// output list
// output list
$i
=
0
;
$i
=
0
;
foreach
(
$list
as
$k
=>
$entry
)
{
foreach
(
$list
as
$k
=>
$entry
)
{
if
(
!
$MYREQUEST
[
'SEARCH'
]
||
preg_match
(
$MYREQUEST
[
'SEARCH'
],
$entry
[
$fieldname
])
!=
0
)
{
if
(
!
$MYREQUEST
[
'SEARCH'
]
||
preg_match
(
$MYREQUEST
[
'SEARCH'
],
$entry
[
$fieldname
])
!=
0
)
{
$sh
=
md5
(
$entry
[
"info"
]);
$field_value
=
htmlentities
(
strip_tags
(
$entry
[
$fieldname
],
''
),
ENT_QUOTES
,
'UTF-8'
);
$field_value
=
htmlentities
(
strip_tags
(
$entry
[
$fieldname
],
''
),
ENT_QUOTES
,
'UTF-8'
);
echo
echo
'<tr class=tr-'
,
$i
%
2
,
'>'
,
'<tr
id="key-'
.
$sh
.
'"
class=tr-'
,
$i
%
2
,
'>'
,
"<td class=td-0><a href=
\"
$MY_SELF
&OB="
,
$MYREQUEST
[
'OB'
],
"&SH="
,
md5
(
$entry
[
$fieldkey
]),
"
\"
>"
,
$field_value
,
'</a></td>'
,
"<td class=td-0><a href=
\"
$MY_SELF
&OB="
,
$MYREQUEST
[
'OB'
],
"&SH="
,
$sh
,
"#key-"
.
$sh
.
"
\"
>"
,
$field_value
,
'</a></td>'
,
'<td class="td-n center">'
,
$entry
[
'num_hits'
],
'</td>'
,
'<td class="td-n center">'
,
$entry
[
'num_hits'
],
'</td>'
,
'<td class="td-n right">'
,
$entry
[
'mem_size'
],
'</td>'
,
'<td class="td-n right">'
,
$entry
[
'mem_size'
],
'</td>'
,
'<td class="td-n center">'
,
date
(
DATE_FORMAT
,
$entry
[
'access_time'
]),
'</td>'
,
'<td class="td-n center">'
,
date
(
DATE_FORMAT
,
$entry
[
'access_time'
]),
'</td>'
,
...
@@ -1141,141 +1046,19 @@ EOB;
...
@@ -1141,141 +1046,19 @@ EOB;
echo
'<td class="td-last center"> </td>'
;
echo
'<td class="td-last center"> </td>'
;
}
}
echo
'</tr>'
;
echo
'</tr>'
;
if
(
$sh
==
$MYREQUEST
[
"SH"
])
{
echo
'<tr>'
;
echo
'<td colspan="7"><pre>'
.
htmlentities
(
print_r
(
apcu_fetch
(
$entry
[
'info'
]),
1
))
.
'</pre></td>'
;
echo
'</tr>'
;
}
$i
++
;
$i
++
;
if
(
$i
==
$MYREQUEST
[
'COUNT'
])
if
(
$i
==
$MYREQUEST
[
'COUNT'
])
break
;
break
;
}
}
}
}
}
else
{
echo
'<tr class=tr-0><td class="center" colspan='
,
$cols
,
'><i>No data</i></td></tr>'
;
}
echo
<<<
EOB
</
tbody
></
table
>
EOB
;
if
(
$list
&&
$i
<
count
(
$list
))
{
echo
"<a href=
\"
$MY_SELF
&OB="
,
$MYREQUEST
[
'OB'
],
"&COUNT=0
\"
><i>"
,
count
(
$list
)
-
$i
,
' more available...</i></a>'
;
}
echo
<<<
EOB
</
div
>
EOB
;
break
;
// -----------------------------------------------
// Per-Directory System Cache Entries
// -----------------------------------------------
case
OB_SYS_CACHE_DIR
:
if
(
!
$AUTHENTICATED
)
{
break
;
}
echo
<<<EOB
<div class=sorting><form>Scope:
<input type=hidden name=OB value={$MYREQUEST['OB']}>
<select name=SCOPE>
EOB;
echo
"<option value=A"
,
$MYREQUEST
[
'SCOPE'
]
==
'A'
?
" selected"
:
""
,
">Active</option>"
,
"<option value=D"
,
$MYREQUEST
[
'SCOPE'
]
==
'D'
?
" selected"
:
""
,
">Deleted</option>"
,
"</select>"
,
", Sorting:<select name=SORT1>"
,
"<option value=H"
,
$MYREQUEST
[
'SORT1'
]
==
'H'
?
" selected"
:
""
,
">Total Hits</option>"
,
"<option value=Z"
,
$MYREQUEST
[
'SORT1'
]
==
'Z'
?
" selected"
:
""
,
">Total Size</option>"
,
"<option value=T"
,
$MYREQUEST
[
'SORT1'
]
==
'T'
?
" selected"
:
""
,
">Number of Files</option>"
,
"<option value=S"
,
$MYREQUEST
[
'SORT1'
]
==
'S'
?
" selected"
:
""
,
">Directory Name</option>"
,
"<option value=A"
,
$MYREQUEST
[
'SORT1'
]
==
'A'
?
" selected"
:
""
,
">Avg. Size</option>"
,
"<option value=C"
,
$MYREQUEST
[
'SORT1'
]
==
'C'
?
" selected"
:
""
,
">Avg. Hits</option>"
,
'</select>'
,
'<select name=SORT2>'
,
'<option value=D'
,
$MYREQUEST
[
'SORT2'
]
==
'D'
?
' selected'
:
''
,
'>DESC</option>'
,
'<option value=A'
,
$MYREQUEST
[
'SORT2'
]
==
'A'
?
' selected'
:
''
,
'>ASC</option>'
,
'</select>'
,
'<select name=COUNT onChange="form.submit()">'
,
'<option value=10 '
,
$MYREQUEST
[
'COUNT'
]
==
'10'
?
' selected'
:
''
,
'>Top 10</option>'
,
'<option value=20 '
,
$MYREQUEST
[
'COUNT'
]
==
'20'
?
' selected'
:
''
,
'>Top 20</option>'
,
'<option value=50 '
,
$MYREQUEST
[
'COUNT'
]
==
'50'
?
' selected'
:
''
,
'>Top 50</option>'
,
'<option value=100'
,
$MYREQUEST
[
'COUNT'
]
==
'100'
?
' selected'
:
''
,
'>Top 100</option>'
,
'<option value=150'
,
$MYREQUEST
[
'COUNT'
]
==
'150'
?
' selected'
:
''
,
'>Top 150</option>'
,
'<option value=200'
,
$MYREQUEST
[
'COUNT'
]
==
'200'
?
' selected'
:
''
,
'>Top 200</option>'
,
'<option value=500'
,
$MYREQUEST
[
'COUNT'
]
==
'500'
?
' selected'
:
''
,
'>Top 500</option>'
,
'<option value=0 '
,
$MYREQUEST
[
'COUNT'
]
==
'0'
?
' selected'
:
''
,
'>All</option>'
,
'</select>'
,
", Group By Dir Level:<select name=AGGR>"
,
"<option value='' selected>None</option>"
;
for
(
$i
=
1
;
$i
<
10
;
$i
++
)
echo
"<option value=
$i
"
,
$MYREQUEST
[
'AGGR'
]
==
$i
?
" selected"
:
""
,
">
$i
</option>"
;
echo
'</select>'
,
' <input type=submit value="GO!">'
,
'</form></div>'
,
'<div class="info"><table cellspacing=0><tbody>'
,
'<tr>'
,
'<th>'
,
sortheader
(
'S'
,
'Directory Name'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'<th>'
,
sortheader
(
'T'
,
'Number of Files'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'<th>'
,
sortheader
(
'H'
,
'Total Hits'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'<th>'
,
sortheader
(
'Z'
,
'Total Size'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'<th>'
,
sortheader
(
'C'
,
'Avg. Hits'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'<th>'
,
sortheader
(
'A'
,
'Avg. Size'
,
"&OB="
.
$MYREQUEST
[
'OB'
]),
'</th>'
,
'</tr>'
;
// builds list with alpha numeric sortable keys
//
$tmp
=
$list
=
array
();
foreach
(
$cache
[
$scope_list
[
$MYREQUEST
[
'SCOPE'
]]]
as
$entry
)
{
$n
=
dirname
(
$entry
[
'filename'
]);
if
(
$MYREQUEST
[
'AGGR'
]
>
0
)
{
$n
=
preg_replace
(
"!^(/?(?:[^/
\\\\
]+[/
\\\\
])
{
".($MYREQUEST['AGGR']-1)."
}
[^/
\\\\
]*).*!"
,
"$1"
,
$n
);
}
if
(
!
isset
(
$tmp
[
$n
]))
{
$tmp
[
$n
]
=
array
(
'hits'
=>
0
,
'size'
=>
0
,
'ents'
=>
0
);
}
$tmp
[
$n
][
'hits'
]
+=
$entry
[
'num_hits'
];
$tmp
[
$n
][
'size'
]
+=
$entry
[
'mem_size'
];
++
$tmp
[
$n
][
'ents'
];
}
foreach
(
$tmp
as
$k
=>
$v
)
{
switch
(
$MYREQUEST
[
'SORT1'
])
{
case
'A'
:
$kn
=
sprintf
(
'%015d-'
,
$v
[
'size'
]
/
$v
[
'ents'
]);
break
;
case
'T'
:
$kn
=
sprintf
(
'%015d-'
,
$v
[
'ents'
]);
break
;
case
'H'
:
$kn
=
sprintf
(
'%015d-'
,
$v
[
'hits'
]);
break
;
case
'Z'
:
$kn
=
sprintf
(
'%015d-'
,
$v
[
'size'
]);
break
;
case
'C'
:
$kn
=
sprintf
(
'%015d-'
,
$v
[
'hits'
]
/
$v
[
'ents'
]);
break
;
case
'S'
:
$kn
=
$k
;
break
;
}
$list
[
$kn
.
$k
]
=
array
(
$k
,
$v
[
'ents'
],
$v
[
'hits'
],
$v
[
'size'
]);
}
if
(
$list
)
{
// sort list
//
switch
(
$MYREQUEST
[
'SORT2'
])
{
case
"A"
:
krsort
(
$list
);
break
;
case
"D"
:
ksort
(
$list
);
break
;
}
// output list
$i
=
0
;
foreach
(
$list
as
$entry
)
{
echo
'<tr class=tr-'
,
$i
%
2
,
'>'
,
"<td class=td-0>"
,
$entry
[
0
],
'</a></td>'
,
'<td class="td-n center">'
,
$entry
[
1
],
'</td>'
,
'<td class="td-n center">'
,
$entry
[
2
],
'</td>'
,
'<td class="td-n center">'
,
$entry
[
3
],
'</td>'
,
'<td class="td-n center">'
,
round
(
$entry
[
2
]
/
$entry
[
1
]),
'</td>'
,
'<td class="td-n center">'
,
round
(
$entry
[
3
]
/
$entry
[
1
]),
'</td>'
,
'</tr>'
;
if
(
++
$i
==
$MYREQUEST
[
'COUNT'
])
break
;
}
}
else
{
}
else
{
echo
'<tr class=tr-0><td class="center" colspan=
6
><i>No data</i></td></tr>'
;
echo
'<tr class=tr-0><td class="center" colspan=
'
,
$cols
,
'
><i>No data</i></td></tr>'
;
}
}
echo
<<<
EOB
echo
<<<
EOB
</
tbody
></
table
>
</
tbody
></
table
>
...
@@ -1295,7 +1078,7 @@ EOB;
...
@@ -1295,7 +1078,7 @@ EOB;
// -----------------------------------------------
// -----------------------------------------------
case
OB_VERSION_CHECK
:
case
OB_VERSION_CHECK
:
echo
<<<EOB
echo
<<<EOB
<div class="info"><h2>APC Version Information</h2>
<div class="info"><h2>APC
u
Version Information</h2>
<table cellspacing=0><tbody>
<table cellspacing=0><tbody>
<tr>
<tr>
<th></th>
<th></th>
...
@@ -1303,24 +1086,24 @@ case OB_VERSION_CHECK:
...
@@ -1303,24 +1086,24 @@ case OB_VERSION_CHECK:
EOB;
EOB;
if
(
defined
(
'PROXY'
))
{
if
(
defined
(
'PROXY'
))
{
$ctxt
=
stream_context_create
(
array
(
'http'
=>
array
(
'proxy'
=>
PROXY
,
'request_fulluri'
=>
True
)
)
);
$ctxt
=
stream_context_create
(
array
(
'http'
=>
array
(
'proxy'
=>
PROXY
,
'request_fulluri'
=>
True
)
)
);
$rss
=
@
file_get_contents
(
"http://pecl.php.net/feeds/pkg_apc.rss"
,
False
,
$ctxt
);
$rss
=
@
file_get_contents
(
"http://pecl.php.net/feeds/pkg_apc
u
.rss"
,
False
,
$ctxt
);
}
else
{
}
else
{
$rss
=
@
file_get_contents
(
"http://pecl.php.net/feeds/pkg_apc.rss"
);
$rss
=
@
file_get_contents
(
"http://pecl.php.net/feeds/pkg_apc
u
.rss"
);
}
}
if
(
!
$rss
)
{
if
(
!
$rss
)
{
echo
'<tr class="td-last center"><td>Unable to fetch version information.</td></tr>'
;
echo
'<tr class="td-last center"><td>Unable to fetch version information.</td></tr>'
;
}
else
{
}
else
{
$apcversion
=
phpversion
(
'apc'
);
$apcversion
=
phpversion
(
'apc
u
'
);
preg_match
(
'!<title>APC ([0-9.]+)</title>!'
,
$rss
,
$match
);
preg_match
(
'!<title>APC
u
([0-9.]+)</title>!'
,
$rss
,
$match
);
echo
'<tr class="tr-0 center"><td>'
;
echo
'<tr class="tr-0 center"><td>'
;
if
(
version_compare
(
$apcversion
,
$match
[
1
],
'>='
))
{
if
(
version_compare
(
$apcversion
,
$match
[
1
],
'>='
))
{
echo
'<div class="ok">You are running the latest version of APC ('
.
$apcversion
.
')</div>'
;
echo
'<div class="ok">You are running the latest version of APC
u
('
.
$apcversion
.
')</div>'
;
$i
=
3
;
$i
=
3
;
}
else
{
}
else
{
echo
'<div class="failed">You are running an older version of APC ('
.
$apcversion
.
'),
echo
'<div class="failed">You are running an older version of APC
u
('
.
$apcversion
.
'),
newer version '
.
$match
[
1
]
.
' is available at <a href="http://pecl.php.net/package/APC/'
.
$match
[
1
]
.
'">
newer version '
.
$match
[
1
]
.
' is available at <a href="http://pecl.php.net/package/APC
u
/'
.
$match
[
1
]
.
'">
http://pecl.php.net/package/APC/'
.
$match
[
1
]
.
'</a>
http://pecl.php.net/package/APC
u
/'
.
$match
[
1
]
.
'</a>
</div>'
;
</div>'
;
$i
=
-
1
;
$i
=
-
1
;
}
}
...
@@ -1328,18 +1111,19 @@ EOB;
...
@@ -1328,18 +1111,19 @@ EOB;
echo
'<tr class="tr-0"><td><h3>Change Log:</h3><br/>'
;
echo
'<tr class="tr-0"><td><h3>Change Log:</h3><br/>'
;
preg_match_all
(
'!<(title|description)>([^<]+)</\\1>!'
,
$rss
,
$match
);
preg_match_all
(
'!<(title|description)>([^<]+)</\\1>!'
,
$rss
,
$match
);
next
(
$match
[
2
]);
next
(
$match
[
2
]
)
;
$changelog
=
$match
[
2
];
while
(
list
(,
$v
)
=
each
(
$match
[
2
])
)
{
for
(
$j
=
2
;
$j
+
1
<
count
(
$changelog
);
$j
+=
2
)
{
list
(,
$ver
)
=
explode
(
' '
,
$v
,
2
)
;
$v
=
$changelog
[
$j
]
;
if
(
$i
<
0
&&
version_compare
(
$apcversion
,
$ver
,
'>='
))
{
if
(
$i
<
0
&&
version_compare
(
$apcversion
,
$ver
,
'>='
))
{
break
;
break
;
}
else
if
(
!
$i
--
)
{
}
else
if
(
!
$i
--
)
{
break
;
break
;
}
}
echo
"<b><a href=
\"
http://pecl.php.net/package/APC/
$ver
\"
>"
.
htmlspecialchars
(
$v
,
ENT_QUOTES
,
'UTF-8'
)
.
"</a></b><br><blockquote>"
;
list
(
$unused
,
$ver
)
=
$v
;
echo
nl2br
(
htmlspecialchars
(
current
(
$match
[
2
]),
ENT_QUOTES
,
'UTF-8'
))
.
"</blockquote>"
;
$changes
=
$changelog
[
$j
+
1
];
next
(
$match
[
2
]);
echo
"<b><a href=
\"
http://pecl.php.net/package/APCu/
$ver
\"
>"
.
htmlspecialchars
(
$v
,
ENT_QUOTES
,
'UTF-8'
)
.
"</a></b><br><blockquote>"
;
echo
nl2br
(
htmlspecialchars
(
$changes
,
ENT_QUOTES
,
'UTF-8'
))
.
"</blockquote>"
;
}
}
echo
'</td></tr>'
;
echo
'</td></tr>'
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment