本地环境:
windows 7
php7.1
laravel5.6
guzzlehttp/guzzle ^6.3
web.php 里定义的路由如下:
Route::get('/', function () {
return view('welcome');
});
Route::get('/test', 'DemoController@index')->name('demo');
执行 php artisan serve
, 访问路由http://localhost:8000/test
, 对应的Controller
如下:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DemoController extends Controller
{
public function index()
{
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'http://localhost:8000/', [
'timeout' => 30
]);
return $response->getStatusCode();
}
}
这种情况一直都是处于加载,无法获得结果。如果换个地址,比如'http://www.163.com', 则正常返回.
1
xuyl OP php artisan serve 有个内置的 http 服务器,默认监听 8000 端口, 而在 laravel 代码里, guzzlehttp 无法把请求发送到 localhost 的 8000 端口?
|
2
fuxkcsdn 2018-05-09 13:01:54 +08:00 via iPhone 1
php 内置的 http server 是 block 的,一次只能处理一个请求
|
3
ucaime 2018-05-09 13:13:37 +08:00 via iPhone
如果我没有看错,你这是环路请求?不挂才怪
|
4
ss098 2018-05-09 13:17:54 +08:00 via Android
2 楼正解,你需要部署 Web 服务器才可以同时处理一个以上的请求。
|
5
xuyl OP |
6
nuxt 2018-05-09 13:25:17 +08:00
死循环,看不出来吗?
|
7
xhinliang 2018-05-09 22:07:46 +08:00
666666 这个死循环写的不错
|
8
shaojjjin 2018-05-09 22:24:29 +08:00 via iPhone
应该是 php 内置的服务器的问题,我也遇到过。后来用 nginx 部署了个本地站点解决。
|