Closed duran004 closed 2 months ago
@duran004, did you also test this behavior outside of using php artisan serve
, which generally makes use of only one worker?
I could reproduce this behavior. With artisan serve,
you only have one PHP worker for a request. With your first request, you are blocking the single worker. This worker will try to access the URL given by the route
function, which will return the full URL to the HTTP client, which then starts a new request. This request can not be processed by artisan serve
because the single worker is already occupied with your initial request. That means you don't have a bug; it is not an infinite loop. Your HTTP client is only waiting for your service to get a new free worker to handle his request.
The error message also gives you this information.
"message": "cURL error 28: Operation timed out after 30001 milliseconds with 0 bytes received.
I didn't test whether PHP_CLI_SERVER_WORKERS
also influences artisan serve
outside sail, but you could try setting it to 2
or more and testing it again. Based on the supervisor config file of sail, it should influence it.
A simpler rebuild of this case can be achieved with the following lines:
<?php
Route::get('test', function() {
return response(Http::get(route('api.user'))->json());
});
Route::get('user', function() {
return response(json_encode(['name' => 'Max']));
})->name('api.user');
Please test it again with PHP_CLI_SERVER_WORKERS=2
.
PHP_CLI_SERVER_WORKERS=2 php artisan serve
Laravel Version
11.15.0
PHP Version
8.2.12
Database Driver & Version
No response
Description
I have 2 controllers, 1 of them creates an api, simply pulls a member with a model and returns as a json response. If I want to connect to the apicontroller with http:get from my admincontroller, artisan somehow takes it in an infinite loop.
ApiController works normally. And it returns json format. If I enter from the browser or send a request from postman it works very well.
web.php
UserController.php
Admin/UserController.php
http://127.0.0.1:8000/api/users/11 When I open the API link with the browser, the response is:
But if I go to admin/users/11 it goes into an infinite loop and give error. The error
Steps To Reproduce
Create 2 controllers and try to connect from one to the other with http:get.