PHP는 스크립트 언어로 인터프리터 컴파일러가 php 파일을 실행한다. Zend engine 기반으로 실행되며 처리 과정은 다음과 같다. (Zend engine은 PHP를 실행시키는 주체이며 여러 컴포넌트의 구성으로 이루어져 있다. 각 컴포넌트들은 php 파일을 토큰화, 파싱, 컴파일, 실행 등의 역할을 한다.)PHP 실행 과정토큰화(lexer) -> 파싱 -> AST -> opcode(컴파일러에 의해 변환됨) -> 실행 (Zend VM에 의해 실행됨)PHP7 이전엔 파싱 단계에서 opcode까지 생성하였지만, 이후엔 각 기능을 모듈화 (토큰화, 파싱, 컴파일) 하여 분리하였다. 모듈화의 장점복잡한 컴파일 과정을 작은 단계로 나눠 처리할 수 있음각 단계가 독립적이어서 유지보수와 디버깅이 쉬움최적화가 필..
php
DB 보다 더 높은 성능의 read/write 가 필요할때웹 서비스를 운영하다 보면 DB의 성능만으로는 부족한 순간이 찾아온다. 특히 실시간으로 빠른 응답이 필요하거나, 반복적으로 같은 데이터를 조회하는 경우에는 DB 대신 캐시를 활용하는 것이 좋은 선택이 될 수 있다.캐시로 활용할수 있는 in-memory DB 들과 apcu대표적인 in-memory DB로는 Redis와 Memcached가 있다. 이들은 독립적인 서버로 운영되며, 분산 환경에서도 잘 동작한다. 하지만 단일 서버 환경에서는 이러한 별도의 서버를 띄우는 것이 오히려 오버헤드가 될 수 있다. 이때 PHP에서 제공하는 apuc 를 고려해볼 수 있다.apcu 의 특징 및 장단점PHP 프로세스와 apcu의 관계PHP-FPM은 master proc..
PHP의 ?: vs ?? 연산자: 차이점과 사용법PHP에서 ?: (엘비스 연산자)와 ?? (Null 병합 연산자)는 비슷해 보이지만 중요한 차이가 있다. 두 연산자의 특징, 차이점, 그리고 적절한 사용 상황에 대해 알아보자.1. ?? (Null 병합 연산자)PHP 7.0에서 도입구문: $result = $a ?? $b동작: $a가 NULL이 아니면 $a를 반환$a가 NULL이면 $b를 반환특징: 오직 NULL 값에 대해서만 대체 값을 제공예시:$username = $_GET['user'] ?? 'Guest';이 코드는 $_GET['user']가 설정되지 않았거나 NULL일 때만 'Guest'를 사용.2. ?: (엘비스 연산자)PHP 5.3에서 도입구문: $result = $a ?: $b동작:$a가 tru..
Xml 파일을 파싱해야 할 일이 있어서 패키지를 사용해봤는데 xml 파일 데이터 읽어들이는데서 계속 문제가 생겨서 php 함수를 써서 해결했다 내가 썼던 패키지 https://github.com/orchestral/parser orchestral/parser [Package] XML Document Parser for Laravel and PHP. Contribute to orchestral/parser development by creating an account on GitHub. github.com https://github.com/sergiorodenas/stream-parser sergiorodenas/stream-parser ⚡ PHP7 / Laravel Multi-format Streamin..
composer require laravel/passport composer로 passport 패키지 다운받는데 제목과 같은 에러가 발생함 .. PHP 메모리 최대 사이즈 확인 php -r "echo ini_get('memory_limit').PHP_EOL;" php.ini 에서 memory_limit 를 변경하거나 COMPOSER_MEMORY_LIMIT=-1 를 composer 앞에 붙여 사용하면 php.ini 파일을 수정할 필요없음 COMPOSER_MEMORY_LIMIT=-1 composer require laravel/passport