homepage Welcome to WebmasterWorld Guest from 50.16.112.199
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Pubcon Platinum Sponsor 2014
Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
Forum Library, Charter, Moderators: coopster & jatar k

PHP Server Side Scripting Forum

    
Strange problem: session and readfile
session_start will create another thread?
iProgram

10+ Year Member



 
Msg#: 3032669 posted 10:25 am on Aug 3, 2006 (gmt 0)

I have a script which sends file to end user:

<?
...
header('length, type...')
readfile('file-to-download.dat');

//the following script should be executed after the whole file downloaded completely.
mail('my@email.com', 'Download completed', 'body', 'from: my@email.com');
?>

It works without any problem. The readfile function shows the "File download" dialog of IE and I won't receive email until IE downloaded the whole file.

However, I found that I need to use session in this script, so I added session_start() at the beginning of this it:

<?
session_start()
...
?>

And suddenly, as long as I execute this script, without finishing the download, I can receive the email message immediately. Why this happened? Is there a way to solve this problem?

 

henry0

WebmasterWorld Senior Member henry0 us a WebmasterWorld Top Contributor of All Time 10+ Year Member



 
Msg#: 3032669 posted 11:58 am on Aug 3, 2006 (gmt 0)

It could be that your PHP.INI does not allow for header not to be set at the your page very top,
as such the order of actions could be changed.

iProgram

10+ Year Member



 
Msg#: 3032669 posted 12:31 pm on Aug 3, 2006 (gmt 0)

So which parameter of php.ini should I look at? I could not move the session_start() to lines under readfile().

henry0

WebmasterWorld Senior Member henry0 us a WebmasterWorld Top Contributor of All Time 10+ Year Member



 
Msg#: 3032669 posted 12:55 pm on Aug 3, 2006 (gmt 0)

Try turning output buffering on

output_buffering = On
so there in no " ; " at the beginning of the line

This allows for sending headers from any position in your script
It is done at the cost of a very slightly slow-down of the exec.
However you should not be scared about it unless your script is a huge one with a heavy load of PHP calls.

<edit>
Don't forget to restart Apache
</edit>

iProgram

10+ Year Member



 
Msg#: 3032669 posted 2:41 pm on Aug 3, 2006 (gmt 0)

I'm trembling, abandon seesion in this script is a better solution ;-)

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved