IT/web17 [PHP] 멀티 프로세스 교착 관리 / semaphore, 세마포어, sem_get() 멀티 프로세스 교착 관리 세마포어와 뮤텍스는 이 포스팅을 보는 본인께서 더 잘 아실 거라 믿는다. 이번에는 php 프로세스 간 세마포어 제어를 다뤄볼 것이다. 인터프리터 주제에 세마포어..!? 라고 생각할 수도 있지만 모든 프로그램은 런타임에 메모리에 적재된 순간부터는 모두 같은 프로세스이기 때문에.. (본인은 php 데몬을 애용하는 편이다. 플랫폼 영향을 안 받기 때문) php - php간, php - 외 native process 간 등 모든 상황에 공유 자원(e.g. file, I/O, db 등 접근 가능한 모든 대상)의 사용 시 교착(deadlock)에 빠질 수 있다. 그래서 php에서도 세마포어가 된다는 것을 알아보려한다. 소스코드 세마포어를 이용하기 위해선 sem_get() 을 사용해야 하는데.. 2022. 1. 21. [PHP] 상수를 이용한 다중 텍스트 치환 / const, define to text, constant, preg_match_all 상수를 이용한 다중 텍스트 치환 상수를 이용한 다중 텍스트 치환을 어디다 쓸 수 있는지 예를 들어보자면 다국어를 지원하는 환경에서 현재 설정된 언어셋이 무엇인지 모르겠지만 프로그램에선 상수화된 키워드를 사용하여 텍스트를 사용하는(e.g. UI 팝업, 시스템 로그 등) 경우 사용할 수 있다. 언어셋에 맞게 텍스트를 구성하는 게 아니라 모든 텍스트를 키워드로 구성해두고 상수를 프리셋으로 사용하면 가변적인 대응이 가능해진다. 그 밖에도 유연한 텍스트 구성에 사용할 수 있으니 참고하자. 소스코드 preg_match_all()를 사용하여 대상 텍스트 내에 { } 괄호로 둘러싸인 키워드와 동일한 이름을 사용하는 상수로 대체한다. 동일한 상수가 있다면 해당 값을 사용하고 const, define 모두 사용 가능하다... 2022. 1. 21. [PHP] 문자열 앞글자 삭제하기 예제, ltrim/substr 활용 문자열 앞글자 삭제하기 예제 remove the first character of string php 내장 함수인 ltrim과 substr을 이용하여 문자열의 앞글자 하나만 삭제하는 예제를 보겠다. 1. ltrim() 활용 - 문장의 가장 앞글자가 동일한 패턴인 경우 ltrim()의 이용이 가능하다. 아래 예제처럼 앞글자가 "/"로 반복하는 경우 ltrim()의 인자로 "/"를 사용하여 trimming 할 수 있다. ltrim()은 left trim을 의미하고 좌측의 공백을 없애는 기능을 하지만 인자으로 받는 문자(문자열도 가능)도 없애준다. 즉 좌측 기준 인자로 준 문자와 매칭되면 삭제를 수행한다. // Strip whitespace (or other characters) from the beginni.. 2022. 1. 12. [PHP] fileperms을 활용한 파일 탐색과 퍼미션 검사 fileperms을 활용한 파일 탐색과 퍼미션 검사 이전에 작성한 탐색기 함수를 이용하여 대상 경로의 모든 파일 중 사용자가 지정한 퍼미션이 아닌 파일을 배열로 반환하는 함수를 만든다. 공동 공간에서 작업을 하거나 서버 내 파일 생성/삭제 등 여러 파일을 제어하다 보면 퍼미션이 꼬이는 경우가 종종 발생한다. 특히 웹 서비스와 관련된 파일을 만들고 관리하다 보면 퍼미션으로 인해 웹 페이지에서 접근이 안 되는 경우가 많다. 그럴 때 일괄적으로 특정 경로의 퍼미션 체크를 할때 유용하게 사용된다. ▽ 파일 탐색기 함수 포스팅 https://muabow.tistory.com/249 [PHP] readdir을 활용한 파일 목록 읽기 예제, 파일 탐색기 readdir을 활용한 파일 목록 읽기 예제, 파일 탐색기 op.. 2022. 1. 6. [PHP] readdir을 활용한 파일 목록 읽기 예제, 파일 탐색기 readdir을 활용한 파일 목록 읽기 예제, 파일 탐색기 opendir, readdir, is_dir 함수를 사용하는 재귀 함수로 구성하였다. 디렉터리는 제외하고 파일만 조회하고 탐색된 전체 경로(full path)를 배열로 반환한다. 사용방법은 함수의 인자로 탐색할 경로를 명세하면 된다. https://github.com/muabow/home/tree/main/src/php/get_file_list GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com 소스코드 .. 2022. 1. 6. [PHP] web shell 설명 및 예제 공유 web shell 설명 및 예제 공유 - web shell, 웹 쉘은 웹 페이지를 통해 shell을 사용하는 것을 의미한다. 보통 shell은 telnet, ssh 등 단말에 접속할 수 있는 프로토콜을 이용하여 접속하는데 개발 환경의 테스트, 현장 대응 등 여러 가지 이유로 백도어(backdoor, 개구멍)처럼 하나씩 숨겨놓기도 한다. web shell은 일반적인 서비스의 포트 스캐닝이나 별도의 검증 툴로 확인할 수 없기 때문에 오픈 되는 경우 문제의 인지를 할 수 없어 많은 사고를 야기한다. 그러므로 개발 중 테스트 또는 인증 절차를 통한 원격 지원용 정도로만 사용하자. https://github.com/muabow/home/tree/main/src/php/web_shell GitHub - muabow.. 2022. 1. 6. [PHP] curl GET/POST Rest API 인증, 요청 및 JSON 응답 처리 방법 curl GET/POST Rest API 인증, 요청 및 JSON 응답 처리 방법 - php curl 요청(request) 및 응답(response)을 쉽게 처리할 수 있는 함수를 소개한다. php 에서 Rest API 서버에게 요청과 응답을 하기 위해 php curl 을 사용한다. php curl 사용 방법은 많지만 사용하기 쉽도록 함수를 만들어 보았다. php curl의 오류 검증, HTTP response 의 response code 검증, json decode 검증을 통해 정상적인 JSON response 데이터인지 검증한다. 그리고 오류 시 각 상황에 맞는 HTTP code의 message로 JSON 데이터를 구성한다. 사용 방법은 아래 소스 코드를 참고하자. https://github.com/.. 2022. 1. 6. [javascript] javascript IP 주소, 포트 유효성 검사 예제 javascript IP 주소, 포트 유효성 검사 예제 - ip address, port, check, validation javascript 에서 자주 사용되는 기능인 IP주소와 포트 검사 함수 코드를 공유한다. 정규식과 .test() 를 이용하여 IP주소 패턴을 검증하고, isInteger()를 이용하여 포트 값을 검증한다. 함수의 범위 검증은 소스코드에서 확인하자. 소스 코드 결과 - 크롬 브라우저에서 F12 개발 도구 > 콘솔 보기를 통해 console.log() 로 찍은 결과를 확인한다. 위 소스 코드의 주석 결과와 같이 출력되는 것을 확인할 수 있다. jquery의 $.isNumeric 과 동일한 기능을 수행하는 Number.isInteger() 의 자세한 설명은 아래의 사이트를 참고하자. h.. 2022. 1. 5. 이전 1 2 3 다음