1--TEST-- 2Test fpassthru() function: Variations 3--FILE-- 4<?php 5/* 6Prototype: int fpassthru ( resource $handle ); 7Description: Reads to EOF on the given file pointer from the current position 8 and writes the results to the output buffer. 9*/ 10 11echo "*** Testing fpassthru() function with files ***\n\n"; 12 13echo "--- Testing with different offsets ---\n"; 14 15$file_name = __DIR__."/passthru_variation.tmp"; 16$file_write = fopen($file_name, "w"); 17fwrite($file_write, "1234567890abcdefghijklmnopqrstuvwxyz"); 18fclose($file_write); 19 20$file_read = fopen($file_name, "r"); 21 22$offset_arr = array( 23 /* Positive offsets */ 24 0, 25 1, 26 5, 27 10, 28 20, 29 30, 30 35, 31 36, 32 70, 33 /* Negative offsets, the file pointer should be at the end of file 34 to get data */ 35 -1, 36 -5, 37 -10, 38 -20, 39 -35, 40 -36, 41 -70 42); 43 44for( $i=0; $i<count($offset_arr); $i++ ) { 45 echo "-- Iteration $i --\n"; 46 if( $offset_arr[$i] >= 0 ) { 47 fseek($file_read, $offset_arr[$i], SEEK_SET); 48 var_dump(fpassthru($file_read) ); 49 rewind( $file_read ); 50 }else 51 { 52 fseek($file_read, $offset_arr[$i], SEEK_END); 53 var_dump( fpassthru($file_read) ); 54 rewind( $file_read ); 55 } 56} 57 58fclose($file_read); // closing the handle 59 60echo "\n--- Testing with binary mode file ---\n"; 61/* Opening the file in binary read mode */ 62$file_read = fopen($file_name, "rb"); 63 64fseek($file_read, 12, SEEK_SET); 65var_dump(fpassthru($file_read) ); 66rewind( $file_read ); 67fclose($file_read); 68 69unlink($file_name); 70 71echo "\n*** Done ***\n"; 72 73?> 74--EXPECT-- 75*** Testing fpassthru() function with files *** 76 77--- Testing with different offsets --- 78-- Iteration 0 -- 791234567890abcdefghijklmnopqrstuvwxyzint(36) 80-- Iteration 1 -- 81234567890abcdefghijklmnopqrstuvwxyzint(35) 82-- Iteration 2 -- 8367890abcdefghijklmnopqrstuvwxyzint(31) 84-- Iteration 3 -- 85abcdefghijklmnopqrstuvwxyzint(26) 86-- Iteration 4 -- 87klmnopqrstuvwxyzint(16) 88-- Iteration 5 -- 89uvwxyzint(6) 90-- Iteration 6 -- 91zint(1) 92-- Iteration 7 -- 93int(0) 94-- Iteration 8 -- 95int(0) 96-- Iteration 9 -- 97zint(1) 98-- Iteration 10 -- 99vwxyzint(5) 100-- Iteration 11 -- 101qrstuvwxyzint(10) 102-- Iteration 12 -- 103ghijklmnopqrstuvwxyzint(20) 104-- Iteration 13 -- 105234567890abcdefghijklmnopqrstuvwxyzint(35) 106-- Iteration 14 -- 1071234567890abcdefghijklmnopqrstuvwxyzint(36) 108-- Iteration 15 -- 1091234567890abcdefghijklmnopqrstuvwxyzint(36) 110 111--- Testing with binary mode file --- 112cdefghijklmnopqrstuvwxyzint(24) 113 114*** Done *** 115