Infra
-
📝 배경어느 날, DB에 이상한 값이 저장되어 있다는 확인 요청을 받았다. 쇼핑몰 관리자 페이지에서 결제 수단을 변경하였는데, 실제 DB에는 결제수단 정보 뿐만 아니라 브라우저 쿠키 값까지 저장되어 있었다. 이로 인해 주문 페이지에 진입할 때, 결제수단 정보를 제대로 파싱하지 못해 오류가 발생했고, 에러 페이지로 이어지고 있는 상황이었다. '최근에 관련 로직 개선이 아예 없었는데, 왜 갑자기?'라는 의문을 품고 로직을 다시 살펴보았다.🔥 이슈PHP에는 HTTP 요청으로 전달된 데이터를 처리하기 위한 주요 슈퍼 글로벌 변수로 $_GET, $_POST, $_REQUEST 3가지가 있다.🔖 $_GET- HTTP 요청 중 GET 메서드로 전달된 데이터를 가져옴- URL 쿼리 문자열에 포함된 값에 접근할 때..
[PHP] PHP 설정에 따른 $_REQUEST의 동작 차이: variables_order, request_order📝 배경어느 날, DB에 이상한 값이 저장되어 있다는 확인 요청을 받았다. 쇼핑몰 관리자 페이지에서 결제 수단을 변경하였는데, 실제 DB에는 결제수단 정보 뿐만 아니라 브라우저 쿠키 값까지 저장되어 있었다. 이로 인해 주문 페이지에 진입할 때, 결제수단 정보를 제대로 파싱하지 못해 오류가 발생했고, 에러 페이지로 이어지고 있는 상황이었다. '최근에 관련 로직 개선이 아예 없었는데, 왜 갑자기?'라는 의문을 품고 로직을 다시 살펴보았다.🔥 이슈PHP에는 HTTP 요청으로 전달된 데이터를 처리하기 위한 주요 슈퍼 글로벌 변수로 $_GET, $_POST, $_REQUEST 3가지가 있다.🔖 $_GET- HTTP 요청 중 GET 메서드로 전달된 데이터를 가져옴- URL 쿼리 문자열에 포함된 값에 접근할 때..
2024.12.30 -
📌 이슈현재 회사에서 php 7.0와 8.2, 2개 버전의 서비스를 관리하고 있다.8.2로 버전업하면서 7.0에서 숨어있던 여러 레거시로 인한 에러들이 나타나기 시작했다.UPDATE {table}SET {column}={value}WHERE {column} IN ();최근에는 syntax 에러를 유발하는 동일한 쿼리임에도 버전별로 결과가 7.0에서는 에러가 무시되고 있던 것을 발견했다.📝 분석https://www.php.net/manual/en/mysqli-stmt.execute.php7.0에서는 이슈 쿼리를 execute()할 경우, UPDATE 처리할 대상이 없기에 아무런 동작도 발생하지 않고 함수가 종료되는 것을 확인했다.You have an error in your SQL syntax; che..
PHP 8.1: MYSQLI_REPORT 기본 오류 모드 변경📌 이슈현재 회사에서 php 7.0와 8.2, 2개 버전의 서비스를 관리하고 있다.8.2로 버전업하면서 7.0에서 숨어있던 여러 레거시로 인한 에러들이 나타나기 시작했다.UPDATE {table}SET {column}={value}WHERE {column} IN ();최근에는 syntax 에러를 유발하는 동일한 쿼리임에도 버전별로 결과가 7.0에서는 에러가 무시되고 있던 것을 발견했다.📝 분석https://www.php.net/manual/en/mysqli-stmt.execute.php7.0에서는 이슈 쿼리를 execute()할 경우, UPDATE 처리할 대상이 없기에 아무런 동작도 발생하지 않고 함수가 종료되는 것을 확인했다.You have an error in your SQL syntax; che..
2024.08.05 -
🐳 들어가기 전🔗 [Cache] PHP 에서 Memcached(멤캐시) 사용하기지난주에는 PHP로 구성된 솔루션에서 Memcached를 사용했다 한 서버에만 카나리 배포를 해서 사용량을 모니터링 해봤는데,캐시 stats 조회 시마다 고객 서버에 접근하여 telnet으로 멤캐시에 접속해 stats를 조회하는게 여간.. 귀찮은 일이 아니었다. 더불어 현재 우리 팀에서는 Secondary DB 쿼리 로그를 분석해,호출 빈도 수가 높은 쿼리들을 대상으로 Memcached로 빼려고 하는 작업을 진행 중인데cache hits율이 얼마나 높아졌는지 등의 모니터링도 쉽지 않을 것 같았다. 여러 서버의 Memcached Hits를 한눈에 볼 수 있는 방법을 고민하다가 이것저것 찾아보게 되었다.팀장님께서 고민해본다고는..
[Cache] GUI 환경에서의 Memcached 지표 수집 (Prometheus, Grafana)🐳 들어가기 전🔗 [Cache] PHP 에서 Memcached(멤캐시) 사용하기지난주에는 PHP로 구성된 솔루션에서 Memcached를 사용했다 한 서버에만 카나리 배포를 해서 사용량을 모니터링 해봤는데,캐시 stats 조회 시마다 고객 서버에 접근하여 telnet으로 멤캐시에 접속해 stats를 조회하는게 여간.. 귀찮은 일이 아니었다. 더불어 현재 우리 팀에서는 Secondary DB 쿼리 로그를 분석해,호출 빈도 수가 높은 쿼리들을 대상으로 Memcached로 빼려고 하는 작업을 진행 중인데cache hits율이 얼마나 높아졌는지 등의 모니터링도 쉽지 않을 것 같았다. 여러 서버의 Memcached Hits를 한눈에 볼 수 있는 방법을 고민하다가 이것저것 찾아보게 되었다.팀장님께서 고민해본다고는..
2024.01.21