Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does file_get_contents work with google.com but not with my site?

Tags:

php

django

get

$page1 = file_get_contents('http://www.google.com');

$page2 = file_get_contents('http://localhost:8000/prueba');

When I echo the results, with Google it works but not with my site. And when I put the address on the explorer works. And this happen with all the site that i make in django. :(

Warning: file_get_contents(http://localhost:8000/prueba) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\xampp\htdocs\squirrelmail\plugins\captcha\backends\b2evo\b2evo.php on line 138

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\squirrelmail\plugins\captcha\backends\b2evo\b2evo.php on line 138

like image 872
Mauricio Avatar asked May 16 '11 08:05

Mauricio


2 Answers

As zub0r pointed out, the built-in PHP server is single threaded. If you do not want to install and configure a web server like nginx, and do not want to use Homestead or Valet, there is another easy solution:

Start another instance of your build-in PHP server with another port and use this in the internal requests of your app.

php -S localhost:8000
\\ in another console
php -S localhost:8001

I use this in my Laravel app when I request some local dummy API via Guzzle and it works fine.

like image 89
Friedrich Avatar answered Oct 14 '22 06:10

Friedrich


For anyone having this problem using PHP Built-in web server (with Laravel in my case), it is caused by your request being blocked by file_get_contents() / curl functions.

Docs of dev server say that

PHP applications will stall if a request is blocked.

Since the PHP built-in server is single threaded, requesting another url on your server will halt first request and it gets timed out.

As a solution, you can use proper web server (nginx, apache etc.).

Edit: As of now, I really suggest you to use Laravel Sail as a development environment for PHP projects. It saves you lots of time with setup and configuration of different services (webserver, databases, queues, etc.).

like image 41
zub0r Avatar answered Oct 14 '22 06:10

zub0r