//----linux+php的环境中,创建了一共享内存块:代码如下 $key = 691; // 共享内存的key,注:类型为int
 $memsize =1071644672 ; //1048576B=1M  创建了1023M
 $perm = 0777; // 共享内存访问权限,参考linux的权限
 function creat_m($key, $memsize, $perm)
 { 
      $shmid = shm_attach($key, $memsize, $perm); 
  return $shmid;
 }  
 $shmid=creat_m($key, $memsize, $perm);
//-----------------  放一个很大的$arr(此数组为动态数组,不停的增加记录的,至少有3000多条记录,大概1M多)shm_put_var($shmid,0610,$arr);
//---开始访问此内存数据
$shmid = shm_attach(691); 
print_r( shm_get_var( $shmid, 0610)); 

问题: print_r( shm_get_var( $shmid, 0610)); 为何常输出为空,(我重新把691内存块删除后,再重建691,就正常,可运行一会,共享内存691下的0601内存区就又没数据了,这是什么问题,应该如何处理)
thanks

解决方案 »

  1.   

    如果有出错, 会返回false.
    看你返回的值的类型
      

  2.   

    是同步的问题
     //创建消息队列
    $message_queue = msg_get_queue(15, 0777);  
    $message_queue_status = msg_stat_queue($message_queue);  print_r($message_queue_status); //向消息队列中写  
    msg_send($message_queue, 1, "691");  
    $message_queue_status = msg_stat_queue($message_queue);  
     //从消息队列中读  
    msg_receive($message_queue, 0, $message_type, 1024, $message, true, MSG_IPC_NOWAIT);  
    echo "<br>";
    //print_r($message."\r\n");
    echo $message;  
     //msg_remove_queue($message_queue);