laravel 웹 응용 프로그램을 php5.6에서 php7.1로 업그레이드하면 libevent 모듈을 업그레이드 할 수 있습니다. 응용 프로그램은 반응 라이브러리를 기반으로 비동기 ans입니다.CentOS 6, Php7.1, libevent, nginx returns 502
그래서 설치가 끝났습니다 : PHP 7.1.12, libevent : 2.1.8 + expressif/pecl-event-libevent. 그리고 안정적인 "502 Bad Gateway"가 nginx에서 있습니다. libevent (ReactStreamLoop)가 없거나 PHP 5.6 이상에서는 libevent : 1.4가 정상적으로 작동합니다. 토지를 index.php에 요청하면 나중에 시작 응용 프로그램 내부에서 문제가 발생합니다.
Nginx의 로그 :
2017년 11월 24일 10시 41분 24초 [오류] 24,985 # 0()는 RECV 실패 * 7 (104 : 피어 연결 재설정) 상류로부터 응답 헤더를 읽는 동안 , 클라이언트 : 14.183.16.180, 서버 : 173.199.117.122, 요청 : "GET/HTTP/1.1", 업스트림 : "fastcgi : //127.0.0.1 : 9000", 호스트 : "173.199.117.122"
2017/11/24 10:41:25 클라이언트에서 14.183.16.180, 서버 : 173.199.117.122, 요청 헤더에서 응답 헤더를 읽는 동안 [recur()가 실패했습니다 (104 : 피어로 연결 재설정)] 오류 : 24985 # "GET/HTTP/1.1", 업스트림 : "fastcgi : //127.0.0.1 : 9000", 호스트 : "173.199.117.122"
PHP-FPM 로그 :
[11 월 24 2017 10시 41분 24초] WARNING : 풀 WWW]에서 시작
39.486978 초 후에 신호 (11) (SIGSEGV)에 종료 자식 22300[24 11 월 - 2017 10시 41분 24초]주의 사항 : [풀 WWW] 아이 22331은
을 시작[24 11 월 - 2017 10시 41분 25초] 경고 : [풀 WWW가] 아이 22301가 종료 시작으로부터 40.205103 초 후 신호 11 (SIGSEGV)
주의 : [pool www] child 22332 started
업데이트 : 강제 사용 ReactStreamLoop 인 경우 작동합니다.
업데이트 : 비슷한 구성으로 로컬에서 재생산되었습니다. LibEventLoop과 충돌하지만 StreamSelectLoop과 작동하는 예제를 발견했습니다.
require_once __DIR__.'/../vendor/autoload.php';
$loop = new \React\EventLoop\LibEventLoop();
//$loop = new \React\EventLoop\StreamSelectLoop();
$config = array(
'host' => '127.0.0.1',
'port' => '3306',
'dbname' => 'mysql',
'user' => 'root',
'passwd' => 'root',
'charset' => 'utf8',
);
$client = new \React\MySQL\Connection($loop, $config);
$client->connect(function() {});
$client->query('select 8 as cnt', function() {
echo "inside\n";
});
echo "start\n";
$loop->run();
출력 :
이#php ./tests/test.php
start
Segmentation fault (core dumped)