FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Reading a file on same server
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Reading a file on same server [message #182362] Wed, 31 July 2013 11:13 Go to next message
Bruce Lee is currently offline  Bruce Lee
Messages: 2
Registered: July 2013
Karma: 0
Junior Member
HI

Suppose I have a php file "read_file.php" that is used to read .txt files, the structure of the folder/files are:

/www/read_file.php
/www/public/upload/

I was wondering which will be faster and why in PHP..

Method 1:
read file using relative path

Eg: get_file_contents("public/upload/test.txt");


Method 2:
read file using URL (note that the server which is making the request and the server where the file is being read is same)

Eg: get_file_contents("http://mydomain.com/public/upload/test.txt");


Can someone explain me which is faster and why?


Thanks
Re: Reading a file on same server [message #182363 is a reply to message #182362] Wed, 31 July 2013 11:40 Go to previous messageGo to next message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma: 0
Senior Member
On 31/07/13 12:13, Bruce Lee wrote:
> HI
>
> Suppose I have a php file "read_file.php" that is used to read .txt files, the structure of the folder/files are:
>
> /www/read_file.php
> /www/public/upload/
>
> I was wondering which will be faster and why in PHP..
>
> Method 1:
> read file using relative path
>
> Eg: get_file_contents("public/upload/test.txt");
>
>
> Method 2:
> read file using URL (note that the server which is making the request and the server where the file is being read is same)
>
> Eg: get_file_contents("http://mydomain.com/public/upload/test.txt");
>
>
> Can someone explain me which is faster and why?
>
The first one. Unless PHP is exceptionally smart the second one will invoke a recursive call to the (apache) server to deliver the file spawning another process and making and destroying a socket in the process.



> Thanks


--
Ineptocracy

(in-ep-toc’-ra-cy) – a system of government where the least capable to lead are elected by the least capable of producing, and where the members of society least likely to sustain themselves or succeed, are rewarded with goods and services paid for by the confiscated wealth of a diminishing number of producers.
Re: Reading a file on same server [message #182366 is a reply to message #182362] Wed, 31 July 2013 13:13 Go to previous messageGo to next message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
Bruce Lee wrote:
^^^^^^^^^
Doubtful. Bruce Lee would have known the answer, having instructed Chuck
Norris who, as we all know, can write 100 LOCs of PHP with one finger in
less than one minute.

> Method 1:
> read file using relative path
>
> Eg: get_file_contents("public/upload/test.txt");
>
>
> Method 2:
> read file using URL (note that the server which is making the request and
> the server where the file is being read is same)
>
> Eg: get_file_contents("http://mydomain.com/public/upload/test.txt");
>
>
> Can someone explain me which is faster and why?

Yes. But if you thought harder about what needs to happen in each case to
get the file contents (i.e., do your own homework), you could have explained
it yourself. That said, you could have just measured it:

<http://php.net/microtime>


PointedEars
--
When all you know is jQuery, every problem looks $(olvable).
Re: Reading a file on same server [message #182368 is a reply to message #182362] Wed, 31 July 2013 16:09 Go to previous messageGo to next message
J.O. Aho is currently offline  J.O. Aho
Messages: 194
Registered: September 2010
Karma: 0
Senior Member
On 31/07/13 13:13, Bruce Lee wrote:
> HI
>
> Suppose I have a php file "read_file.php" that is used to read .txt files, the structure of the folder/files are:
>
> /www/read_file.php
> /www/public/upload/
>
> I was wondering which will be faster and why in PHP..
>
> Method 1:
> read file using relative path
>
> Eg: get_file_contents("public/upload/test.txt");
>
>
> Method 2:
> read file using URL (note that the server which is making the request and the server where the file is being read is same)
>
> Eg: get_file_contents("http://mydomain.com/public/upload/test.txt");
>
>
> Can someone explain me which is faster and why?

Compare what would happen:

Method 1:
1. PHP opens a file.
2. Reads file.
3. Close file.

Method 2:
1. PHP makes a handshake with the webserver
2. Web server opens file.
3. Web server opens log file (or it's already open, depends on config).
4. Web server reads file.
5. Web server sends file.
6. Web server writes to log.
7. PHP receives data

Handshakes are usually time consuming and as the web server will do
other things too, it will cause overhead.

You could compare the whole with reading a book, I'll present two
methods and you pick which one is faster:

Method 1:
You read a book.

Method 2:
You ask your friend to read a book, write it down on paper and you read
the written papers.

And if you doubt us, do as Thomas suggests, measure the time consumed,
test it say 1000 times each method, compare the times.

There is another aspect to it too, error handling will be more
difficult, as you don't really know why the web server suddenly gives
you a 404, is the file really gone or just that the web server ain't
allowed to access it or someone changed the DocumentRoot.

Also the more you do over the net instead of directly, it's more
difficult to follow what happens in your code and it becomes difficult
to maintain the code in a proper way, I have seen such code out in the
live, just for someone thought it was simpler to call another script
than write the function in a way that you could include the code and use
it directly.

--

//Aho
Re: Reading a file on same server [message #182374 is a reply to message #182368] Thu, 01 August 2013 19:28 Go to previous message
Luuk is currently offline  Luuk
Messages: 329
Registered: September 2010
Karma: 0
Senior Member
On 31-07-2013 18:09, J.O. Aho wrote:
> On 31/07/13 13:13, Bruce Lee wrote:
>> HI
>>
>> Suppose I have a php file "read_file.php" that is used to read .txt
>> files, the structure of the folder/files are:
>>
>> /www/read_file.php
>> /www/public/upload/
>>
>> I was wondering which will be faster and why in PHP..
>>
>> Method 1:
>> read file using relative path
>>
>> Eg: get_file_contents("public/upload/test.txt");
>>
>>
>> Method 2:
>> read file using URL (note that the server which is making the request
>> and the server where the file is being read is same)
>>
>> Eg: get_file_contents("http://mydomain.com/public/upload/test.txt");
>>
>>
>> Can someone explain me which is faster and why?
>
> Compare what would happen:
>
> Method 1:
> 1. PHP opens a file.
> 2. Reads file.
> 3. Close file.
>
> Method 2:
> 1. PHP makes a handshake with the webserver
> 2. Web server opens file.
> 3. Web server opens log file (or it's already open, depends on config).
> 4. Web server reads file.
> 5. Web server sends file.
> 6. Web server writes to log.
> 7. PHP receives data
>
> Handshakes are usually time consuming and as the web server will do
> other things too, it will cause overhead.
>
> You could compare the whole with reading a book, I'll present two
> methods and you pick which one is faster:
>
> Method 1:
> You read a book.
>
> Method 2:
> You ask your friend to read a book, write it down on paper and you read
> the written papers.
>
> And if you doubt us, do as Thomas suggests, measure the time consumed,
> test it say 1000 times each method, compare the times.
>
> There is another aspect to it too, error handling will be more
> difficult, as you don't really know why the web server suddenly gives
> you a 404, is the file really gone or just that the web server ain't
> allowed to access it or someone changed the DocumentRoot.
>
> Also the more you do over the net instead of directly, it's more
> difficult to follow what happens in your code and it becomes difficult
> to maintain the code in a proper way, I have seen such code out in the
> live, just for someone thought it was simpler to call another script
> than write the function in a way that you could include the code and use
> it directly.
>

And what about someone else going to:
http://mydomain.com/public/upload/test.txt

With the first method it's possible to store your docs where they are
not reachable directly from the outside world.....
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Why type hint when you can type cast
Next Topic: Newline (cr/lf) in imagestring
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Fri Sep 20 11:29:06 GMT 2024

Total time taken to generate the page: 0.02313 seconds