Reading a file on same server [message #182362] |
Wed, 31 July 2013 11:13 |
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 |
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 |
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 |
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 |
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.....
|
|
|