无意间看到这篇文章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