memcache veya memcached (PHP için) benim Apache web sunucusu üzerinde yüklü olup olmadığını nasıl test ederim?
Memcache is a caching daemon designed especially for dynamic web applications to decrease database load by storing objects in memory.
neden extension_loaded() fonksiyonunu kullanmak değil mi?
Bu durumda en iyi yaklaşım, eşit olarak hızlı) () veya function_exists (extension_loaded kullanmaktır.
Burada kanıt görebilirsiniz:
https://github.com/dragoonis/ppi-framework/blob/master/Cache/Memcached.php#L140
Bear in mind that some PHP extensions such as APC have php.ini settings that can disable them even though the extension may be loaded. Here is an example of how to check against that also:
https://github.com/dragoonis/ppi-framework/blob/master/Cache/Apc.php#L79
Umarım bu yardımcı olur.
Bu eski bir konu olduğunu biliyorum, ama ben herhangi bir uzantısı için yararlı buldum başka bir yol daha var.
Koşmak
php -m | grep <module_name>
Bu özel durumda:
php -m | grep memcache
Eğer tüm PHP modülleri listelemek istiyorsanız:
php -m
Sisteminize bağlı olarak buna benzer bir çıktı almak istiyorum:
[PHP Modules]
apc
bcmath
bz2
... lots of other modules ...
mbstring
memcache
... and still more modules ...
zip
zlib
[Zend Modules]
Bunu memcache bu listede görebilirsiniz.
Bunu kullanın:
<?php
if (class_exists('Memcache')) {
$server = 'localhost';
if (!empty($_REQUEST['server'])) {
$server = $_REQUEST['server'];
}
$memcache = new Memcache;
$isMemcacheAvailable = @$memcache->connect($server);
if ($isMemcacheAvailable) {
$aData = $memcache->get('data');
echo '<pre>';
if ($aData) {
echo '<h2>Data from Cache:</h2>';
print_r($aData);
} else {
$aData = array(
'me' => 'you',
'us' => 'them',
);
echo '<h2>Fresh Data:</h2>';
print_r($aData);
$memcache->set('data', $aData, 0, 300);
}
$aData = $memcache->get('data');
if ($aData) {
echo '<h3>Memcache seem to be working fine!</h3>';
} else {
echo '<h3>Memcache DOES NOT seem to be working!</h3>';
}
echo '</pre>';
}
}
if (!$isMemcacheAvailable) {
echo 'Memcache not available';
}
?>
Not class_exists
, extensions_loaded
tümünü ve function_exists
only kontrol the link ile {[(5) ]} ve memcache
paketi.
Aslında memcache ya gerekir yüklü olup olmadığını kontrol etmek için:
EDIT 2: Tamam, aslında burada daha kolay bir komple çözüm:
if (class_exists('Memcache')) {
$memcache = new Memcache;
$isMemcacheAvailable = @$memcache->connect('localhost');
}
if ($isMemcacheAvailable) {
//...
}
EDIT: Aslında ilk uyarıları hata atmak için PHP zorlamak gerekir. Bu SO question cevap bakabilirsiniz.
Daha sonra bağlantıyı üzerinden test edebilirsiniz:
try {
$memcache->connect('localhost');
} catch (Exception $e) {
// well it's not here
}