无意间看到这篇文章PHP共享内存使用场景及注意点,自己跑了把性能
$str = '123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789';
<?php
$str = '123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789';
$f = fopen('shmop.txt', 'r');
$beginTime = microtime(1);
for($i=0; $i<=100000; $i++){
fread($f, 100);
}
fclose($f);
$endTime = microtime(1);
$time = $endTime-$beginTime;
echo "file $time\n";
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redisKey = 'shmopTest';
$beginTime = microtime(1);
for($i=0; $i<=100000; $i++){
$redis->get($redisKey);
// $redis->setex($redisKey,600,$str);
}
$redis->close();
$endTime = microtime(1);
$time = $endTime-$beginTime;
echo "redis $time\n";
$key = ftok(__FILE__, 'h');
$mode = 'c';
$permissions = 0644;
$size = 1024;
$beginTime = microtime(1);
$shmid = shmop_open($key, $mode, $permissions, $size);
for($i=0; $i<=100000; $i++){
// shmop_write($shmid, "Hello World!", 0);
shmop_read($shmid, 0, 100);
}
shmop_delete($shmid);
shmop_close($shmid);
$endTime = microtime(1);
$time = $endTime-$beginTime;
echo "shmop $time\n";
写入时间对比: file 0.77474498748779 redis 14.926705121994 shmop 0.070791006088257
读取时间对比:
file 0.15014791488647
redis 14.551459789276
shmop 0.075877904891968