From:             
Operating system: All
PHP version:      5.3.8
Package:          EXIF related
Bug Type:         Bug
Bug description:exif_read_file assumes only stdio supports stat(), performs 
slow seek to end

Description:
------------
Per Twitter exchange with @pierrejoye

The exif_read_file function checks whether the file is accessed over stdio.
If 
it is accessed over stdio, VCWD_STAT() is used to get the size of the file

efficiently. If it is accessed by any other means, this pattern is used:


                        php_stream_seek(ImageInfo->infile, 0, SEEK_END);
                        ImageInfo->FileSize = php_stream_tell(ImageInfo-
>infile);
                        php_stream_seek(ImageInfo->infile, 0, SEEK_SET);

Moving the seek pointer to the end can trigger slow, bandwidth-hungry
network 
operations for remote stream wrappers, such as S3 wrappers. 

Please test whether the stream implements the stat operation and, if so,
use it 
to avoid this performance hit.

I was able to work around the problem by teaching my stream wrapper to 
specifically tolerate the "seek to the end / ftell / seek to the start"
pattern 
and return cached data.



-- 
Edit bug report at https://bugs.php.net/bug.php?id=55781&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=55781&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=55781&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=55781&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=55781&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=55781&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=55781&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=55781&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=55781&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=55781&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=55781&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=55781&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=55781&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=55781&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=55781&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=55781&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=55781&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=55781&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=55781&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=55781&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=55781&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=55781&r=mysqlcfg

Reply via email to