PHP関数-信号と共有メモリ関数

8884 ワード

shmop_* 関数はWindows 2000以前のバージョンでは使用できない、WindowsシステムではPHPをサーバモードにインストールした場合にのみ動作(CLIとCGIモードではshmop_*関数は動作しない)、php.iniファイルの「;extension=php_shmop.dll」オプションの「;」削除、保存後にApacheサーバを再起動する.なお、本章の他の関数はUNIX、Linuxシステムのみをサポートする.
  • shmop_close共有メモリ
    <?php
    
    $shm_key=ftok(__FILE__,'t');					//             
    
    $shm_id=shmop_open($shm_key,"c",0644,100);	//        
    
    
    
    shmop_close($shm_id);						//      
    
    ?>
  • を閉じる.
  • shmop_delete共有メモリ
    <?php
    
    $shm_key=ftok(_FILE_,'t');					//             
    
    $shm_id=shmop_open($shm_key,"c",0777,100);	//        
    
    
    
    $result=shmop_write($shm_id,'iwanc'.0);		//       
    
    shmop_delete($shm_id);						//      
    
    ?>
  • を削除する.
  • shmop_open共有メモリ識別子
    <?php
    
    $shm_key=ftok(_FILE_,'t');					//             
    
    $shm_id=shmop_open($shm_key,"c",0644,100);	//        
    
    //$shm_key	    .     ,           
    
    //"c"	    .                                 ,    (    "a","w","n")
    
    //0644	    .       ,       ,        
    
    //100	    .       ,      
    
    ?>
  • を確立する.
  • shmop_read共有メモリにおいて資料
    <?php
    
    $shm_key=ftok(_FILE_,'t');							//             
    
    $shm_id=shmop_open($shm_key,"c",0644,100);			//        
    
    
    
    $result=shmop_write($shm_id,'   iwanc.com',0);	//       
    
    $shm_data=shmop_read($shm_id,0,6);					//$shm_id:        , 0      ,  6     ,  "   "
    
    shmop_close($shm_id);
    
    ?>
  • を読み取る.
  • shmop_size共有メモリのサイズ
    <?php
    
    $shm_key=ftok(_FILE_,'t');							//             
    
    $shm_id=shmop_open($shm_key,"c",0644,100);			//        
    
    
    
    $result=shmop_size($shm_id);						//  "100"
    
    ?>
  • を取得する.
  • shmop_write共有メモリに資料を書き込む
    <?php
    
    $shm_key=ftok(_FILE_,'t');							//             
    
    $shm_id=shmop_open($shm_key,"c",0644,100);			//        
    
    
    
    $result=shmop_write($shm_id,'  C',0);				// 0    
    
    ?>
  • .
  • ftokシステムVプロセスへのパスの変換値
    <?php
    
    $key=ftok(__FILE__,'t');		//               
    
    ?>
  • msg_get_queue情報キュー
    <?php
    
    $f_id=ftok('home/test/t.php','R');
    
    $key=msg_get_queue($f_id,0666);		//$f_id:     .0666:       ,   0666.                ,        
    
    if(msg_receive($key,1,$type,100,$msg,true,0,$error)){
    
    	echo "$msg";
    
    }
    
    else{
    
    	echo $error;
    
    }
    
    msg_remove_queue($key);				//       
    
    ?>
  • を確立する.
  • msg_receive情報キューにおいて情報
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=msg_get_queue($f_id,0666);		//    
    
    if(msg_receive($key,1,$msg_type,1600,$msg,true,0,$msg_error)){
    
    	if($msg != 'quit'){				//      
    
    		echo "$msg";
    
    	}
    
    }
    
    else{
    
    	echo $msg_error;				//           
    
    }
    
    msg_remove_queue($key);				//       
    
    ?>
  • を読み出す.
  • msg_remove_queue情報キュー
  • を破棄する.
  • msg_sendは、情報キュー
    <?php
    
    $f_id=ftok('home/test/t.php','R');					//       
    
    $key=msg_get_queue($f_id,0666);						//    
    
    if(!msg_send($key,1,'  C',true,true,$msg_error)){	//       
    
    	echo "       ,  :$msg_error";			//      
    
    }
    
    msg_remove_queue($key);								//       
    
    ?>
  • にメッセージを送信する.
  • msg_set_queue情報キューのデータ構造
    <?php
    
    $f_id=ftok('home/test/t.php','R');					//       
    
    $key=msg_get_queue($f_id,0666);						//    
    
    if(!msg_send($key,1,'  C',true,true,$msg_error)){	//       
    
    	echo "       ,  :$msg_error";			//      
    
    }
    
    
    
    msg_set_queue($key,array('msg_perm.uid'=>'80'));	//$key:        ,       
    
    print_r(msg_stat_queue($key));						//      
    
    ?>
  • が設定.
  • msg_stat_queue情報キューのデータ構造
  • を取得する.
  • sem_acquireキャプチャシステム信号
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);
    
    sem_acquire($key);					//           ,            ,              					
    
    ?>
  • sem_getシステムプロセスの信号コード値
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//1024:            ,0644:     				
    
    ?>
  • を取得する.
  • sem_releaseシステム信号
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    $shm_put_var($data,$ine,'  C');	//    
    
    shm_detach($data);					//        
    
    sem_release($key);					//      			
    
    ?>
  • を解放する.
  • sem_removeシステム信号
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    $shm_put_var($data,$ine,'  C');	//    
    
    sem_remove($key);					//      			
    
    ?>
  • を削除する.
  • shm_attachメモリへの接続をオンまたは確立する
  • shm_detachメモリへの接続を中止する
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    print_r(shm_get_var($data,$ine));	//        
    
    shm_detach($data);					//        		
    
    ?>
  • .
  • shm_get_varメモリの変数値の内容
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    
    
    $shm_put_var($data,$ine,'  C');	//         
    
    print_r(shm_get_var($data,$ine));	//$data:        ,$ine     
    
    shm_detach($data);					//        		
    
    ?>
  • を取得する.
  • shm_put_varメモリの変数値
  • を追加または変更する.
  • shm_remove_varメモリで指定する変数値
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    $shm_put_var($data,$ine,'  C');	//         
    
    print_r(shm_get_var($data,$ine));	//        
    
    
    
    shm_remove_var($data,$ine);			//           
    
    
    
    print_r(shm_get_var($data,$ine));
    
    shm_detach($data);					//        		
    
    ?>
  • を削除する.
  • shm_remove共有メモリ領域のすべてのコンテンツ
    <?php
    
    $f_id=ftok('home/test/t.php','R');	//       
    
    $key=sem_get($key,1024,0644);		//          
    
    $data=shm_attach($key,1024);		//       
    
    $shm_put_var($data,$ine,'  C');	//         
    
    print_r(shm_get_var($data,$ine));	//        
    
    
    
    shm_remove($data,$ine);				//         
    
    
    
    print_r(shm_get_var($data,$ine));
    
    shm_detach($data);					//        		
    
    ?>
  • をクリアする.