文字

范例

Example #1 Cancelling a request

<?php
 

 
function  my_nop_cb ( $data $result ) {
  echo 
"my_nop " $data "\n" ;
 }

// This eio_nop() call will be cancelled
$req  eio_nop ( EIO_PRI_DEFAULT "my_nop_cb" "1" );
var_dump ( $req );
eio_cancel ( $req );

// This time eio_nop() will be processed
eio_nop ( EIO_PRI_DEFAULT "my_nop_cb" "2" );

// Process requests
eio_event_loop ();
?>

以上例程的输出类似于:

resource(4) of type (EIO Request Descriptor)
my_nop 2
 

Example #2 Calling eio_chmod()

<?php
$temp_filename 
dirname ( __FILE__ ) . "/eio-temp-file.tmp" ;
touch ( $temp_filename );


function  my_chmod_callback ( $data $result ) {
    global 
$temp_filename ;

    if (
$result  ==  && ! is_readable ( $temp_filename ) &&  is_writable ( $temp_filename )) {
        echo 
"eio_chmod_ok" ;
    }

    @
unlink ( $temp_filename );
}

eio_chmod ( $temp_filename 0200 EIO_PRI_DEFAULT "my_chmod_callback" );
eio_event_loop ();
?>

以上例程的输出类似于:

eio_chmod_ok
 

Example #3 Making a custom request

<?php

function  my_custom_callback ( $data $result ) {
    
var_dump ( $data );
    
var_dump ( count ( $result ));
    
var_dump ( $result [ 'data_modified' ]);
    
var_dump ( $result [ 'result' ]);
}


function  my_custom ( $data ) {
    
var_dump ( $data );

    
$result   = array(
        
'result'         =>  1001 ,
        
'data_modified'  =>  "my custom data" ,
    );

    return 
$result ;
}

$data  "my_custom_data" ;
$req  eio_custom ( "my_custom" EIO_PRI_DEFAULT "my_custom_callback" $data );
var_dump ( $req );
eio_event_loop ();
?>

以上例程的输出类似于:

resource(4) of type (EIO Request Descriptor)
string(14) "my_custom_data"
string(14) "my_custom_data"
int(2)
string(14) "my custom data"
int(1001)
 

Example #4 Grouping requests

<?php


$temp_filename  dirname ( __FILE__ ) . "/eio-file.tmp" ;
$fp  fopen ( $temp_filename "w" );
fwrite ( $fp "some data" );
fclose ( $fp );


function  my_grp_done ( $data $result ) {
 global 
$temp_filename ;
 
var_dump ( $result  ==  0 );
 @
unlink ( $temp_filename );
}


function  my_grp_file_opened_callback ( $data $result ) {
 global 
$my_file_fd $grp ;

 
$my_file_fd  $result ;

 
var_dump ( $result  0 );

 
// Create eio_read() request and add it to the group
 
$req  eio_read ( $my_file_fd 4 0 EIO_PRI_DEFAULT "my_grp_file_read_callback" );
 
eio_grp_add ( $grp $req );
}


function  my_grp_file_read_callback ( $data $result ) {
 global 
$my_file_fd $grp ;

 
var_dump ( $result );

 
// Create eio_close() request and add it to the group
 
$req  eio_close ( $my_file_fd );
 
eio_grp_add ( $grp $req );
}

$grp  eio_grp ( "my_grp_done" "my_grp_data" );

// Create eio_open() request and add it to the group
$req  eio_open ( $temp_filename EIO_O_RDWR  EIO_O_APPEND  NULL ,
  
EIO_PRI_DEFAULT "my_grp_file_opened_callback" NULL );
eio_grp_add ( $grp $req );
var_dump ( $grp );

eio_event_loop ();
?>

以上例程的输出类似于:

resource(6) of type (EIO Group Descriptor)
bool(true)
string(4) "some"
bool(true)
 

Example #5 Using eio with libevent extension

<?php
function  my_eio_poll ( $fd $events $arg ) {
    

    
if ( eio_nreqs ()) {
        
eio_poll ();
    }
    

}

function 
my_nop_cb ( $d $r ) {
    
var_dump ( $r );  var_dump ( $d );
}

$base  event_base_new ();
$event  event_new ();

$fd  eio_get_event_stream ();
var_dump ( $fd );

eio_nop ( EIO_PRI_DEFAULT "my_nop_cb" "nop data" );
eio_mkdir ( "/tmp/abc-eio-temp" 0750 EIO_PRI_DEFAULT "my_nop_cb" "nop data" );



// set event flags
event_set ( $event $fd EV_READ  "my_eio_poll" , array( $event $base ));

// set event base 
event_base_set ( $event $base );

// enable event
event_add ( $event );

// start event loop
event_base_loop ( $base );


?>

以上例程的输出类似于:

int(3)
int(0)
string(8) "nop data"
int(0)
string(10) "mkdir data"
 

Example #6 Using eio with event extension

<?php
$base 
= new  EventBase ();

// Retrieve eio polling stream.
// Note, this variable should be alive as long as the event loop is running.
$eio_stream  eio_get_event_stream ();

// Bind eio polling stream to the event loop.
$poll_event  = new  Event ( $base $eio_stream Event :: READ , function () {
  if (
eio_nreqs ()) {
    
eio_poll ();
  }
});
$poll_event -> add ();

// Add eio jobs
eio_nop ( EIO_PRI_DEFAULT , function () {
  echo 
"eio_nop\n" ;
});

// Add events
$timer  Event :: timer ( $base , function () {
  echo 
"2 seconds elapsed\n" ;
});
$timer -> add ( 2 );

// Dispatch events.
$base -> dispatch ();
?>

以上例程的输出类似于:

eio_nop
2 seconds elapsed
 
上一篇: 下一篇: