Hyperf 심층 분석: HTTP 서비스가 요청을 처리하는 방식
이전 글에서 HTTP 서비스 시작 시 발생하는 과정을 다루어 Hyperf 프레임워크와 HTTP 서비스 초기화 과정에 대해 더 깊이 이해할 수 있게 되었습니다. 오늘은 HTTP 서비스에 접속할 때 요청을 어떻게 처리하고 응답 콘텐츠를 반환하는지에 대해 계속해서 알아보겠습니다.
HTTP 서비스가 시작될 때, Hyperf는 Swoole에 요청 이벤트 처리 함수를 등록합니다. HTTP 요청을 받 ...
6월 21일 18:50에 게시됨
웹 아키텍처 유형 및 구축 방법
웹 아키텍처 유형
1. 순수 정적 웹
순수 정적 웹은 사용자와의 상호작용이 없으며, 단순히 정보를 표시하는 용도로만 사용됩니다. 이 때문에 일반적인 웹 취약점이 존재하지 않습니다.
2. 프론트엔드와 백엔드가 분리되지 않은 웹
프론트엔드 코드가 백엔드 프레임워크에 내장되어 있습니다. 사용자가 웹사이트에 접속하면, 백엔드에서 페이지를 렌더링하여 사용자에게 ...
6월 21일 17:08에 게시됨
리눅스에서 PHP 환경과 Composer 설치 가이드
기존 PHP 제거하기
1. PHP 설치 방식 확인
패키지 매니저(Yum/DNF)로 설치된 경우
rpm -qa | grep php
php-7.3.4-xxx 형태의 출력이 나오면 패키지 매니저로 설치된 것입니다.
소스 컴파일로 설치된 경우
which php
php -i | grep configure
출력에 --prefix=/usr/local/php 같은 경로가 포함되어 있으면 소스 컴파일 설치입니다.
2. PHP 제거
방법 1: 패키지 매니 ...
6월 20일 21:21에 게시됨
PHP PDO 트랜잭션과 오류 처리 전략
PDO 오류 처리 모드의 종류와 특성
PHP의 PDO는 데이터베이스 작업 중 발생하는 오류를 다양한 방식으로 처리할 수 있도록 세 가지 오류 모드를 제공합니다. 각각의 모드는 애플리케이션의 안정성과 디버깅 효율에 직접적인 영향을 미칩니다.
PDO::ERRMODE_SILENT: 기본 동작 모드로, 오류가 발생해도 별도의 경고나 예외를 발생시키지 않습니다. 개발자는 각 메서드의 ...
6월 20일 16:29에 게시됨
ThinkPHP 연속 메서드 활용 가이드
1. SQL 직접 사용
2. 연속 메서드 체이닝
select()는 반드시 마지막에 호출해야 하며, 그 외 메서드는 순서에 제약이 없습니다.
2.1 alias - 테이블 별칭 설정
현재 테이블에 별칭을 부여하여 join 등 다른 연속 메서드와 함께 활용합니다.
$Dao = M('Member');
$Dao->alias('m')->join('__ORDER__ o ON o.member_id = m.id')->select();
2.2 join - 테이블 조인
지원하 ...
6월 19일 03:03에 게시됨
Mac에서 PHP 개발 환경 구성: Apache + PHP + MySQL
Mac에서 PHP 개발 환경 설정하기
Mac 시스템에는Apache, PHP, MySQL을 쉽게 구성할 수 있습니다. 이제 차근차근 설정해보겠습니다.
1. Apache 시작하기
Apache를 시작하는 방법은 두 가지가 있습니다.
방법 1: 네트워크 공유 설정
"시스템 환경설정" → "공유"로 이동하여 "인터넷 공유" 옵션을 활성화합니다.
방법 2: 터미널에서 명령어 실행
sudo apachectl start
...
6월 17일 05:37에 게시됨
PHP에서의 메시지 손실 및 중복 처리
1. 원인 분석
메시지 손실
생성자가 메시지를 영구적으로 저장하지 않아 시스템 다운 시 손실
메시지 큐가 영구화 설정이 되어 있지 않음
소비자가 메시지를 받았지만 처리 전에 다운되어 메시지 확인 후 손실
네트워크 오류, 타임아웃, 큐 가득 찰 때 등
중복 소비
소비자의 처리 시간 초과 또는 실패로 인해 메시지 재전송
메시지가 올바르게 확인되지 않아 큐에서 ...
6월 11일 01:43에 게시됨
쇄락 문제: 개념, 재현 및 해결 방법
Nginx와 Workerman과 같은 많은 네트워크 서버는 단일 마스터-다중 워커 프로세스 모델을 사용합니다. 마스터 프로세스는 리스닝 소켓을 생성하고 워커 프로세스를 생성하며 관리합니다. 워커 프로세스는 마스터 프로세스가 fork 시스템 호출을 통해 생성되므로 마스터 프로세스의 리스닝 소켓을 상속받아 각 워커 프로세스가 독립적으로 클라이언트 연결을 수신하고 처리 ...
6월 8일 19:08에 게시됨
PHP로 구현하는 핵심 수학 알고리즘: 피보나치부터 선형 체까지
PHP는 웹 개발에서 널리 쓰이지만, 수학적 계산과 알고리즘 구현에도 충분히 활용할 수 있다. 본문에서는 대표적인 수학 알고리즘들을 PHP로 구현하는 방법을 살펴본다.
보나치 수열의 세 가지 접근법
피보나치 수열은 각 항이 앞 두 항의 합으로 정의되는 대표적인 재귀 수열이다. PHP에서는 성능과 메모리 특성에 따라 다양한 방식으로 구현할 수 있다.
재귀적 접근
...
6월 3일 18:41에 게시됨
PHP 코드 및 명령 실행 취약점
PHP 코드 및 명령 실행
1. 코드 실행
PHP 코드 실행은 PHP가 제공하는 함수를 통해 직접 또는 간접적으로 PHP 코드를 실행하는 것을 의미합니다. 코드 실행을 유발할 수 있는 주요 함수로는 eval(), assert(), preg_replace(), create_function() 등이 있습니다.
직접 코드 실행 함수
eval() 함수
eval() 함수는 전달된 문자열을 PHP 코드로 실행합니다.
<?php
// 전 ...
6월 2일 19:56에 게시됨