개발/php
-
PHP mkdir 권한 문제(umask)개발/php 2018. 11. 9. 17:47
파일 업로드 관련 코드를 작성하던 도중 다음과 같은 코드가 있었다.$path = '/home/test/tmp'; if (is_dir($path) === false) { mkdir($path, 0777, true); }위 코드에서 보면 만들고자 하는 디렉토리는 /home/test/tmp 라는 디렉토리이고 recursive 옵션을 true 로 주어서 test 폴더와 tmp 폴더가 만들어지는고 test 와 tmp 폴더의 권한은 777 옵션이 적용되어있는 것을 기대 하였다.하지만 만들어진 디렉토리를 보니 권한이 755 로 잡혀잇는것이다.ls -al |grep test_dir drwxr-xr-x 3 root root 4096 9월 2 11:11 test_dir원인을 찾던도중 다음과 같은 원인을 찾을수 있었다.um..
-
PHP 대용량 엑셀다운로드개발/php 2018. 11. 9. 17:41
소개300 백만건 이상의 엑셀 다운로드 파일 요청이 들어와서 기능을 검토하던 도중 다운로드 크기가 200MB 를 넘어 버리는 현상이 발생해 서버 설정에 잡아둔 메모리를 초과하는 현상이 나타났다. ini_set 설정으로 ini_set('memory_limit', -1) 로 진행 하려했지만 서버에 무리가 갈거 같아서 라이브러리들을 찾는 도중 괜찮은 라이브러리가 있어 메모해둡니다. 공식 홈페이지에서는 데이터 기록시 한번에 한줄 혹은 여러줄씩 데이터를 읽어서 메모리에 저장해 둔다음 파일을 쓰고 메모리를 해제 하는 방식을 채택한다. (읽기 기능도 마찬가지로 한줄 혹은 여러줄씩 데이터를 읽어오고 해제 한다고 합니다.)github공식 홈페이지 CODEcomposer require box/spout use Box\Sp..
-
php 에서 한글포함 여부를 체크해보자개발/php 2018. 11. 9. 17:39
1. 환경체크php -v PHP 7.2.9 (cli) (built: Aug 15 2018 08:05:45) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.9, Copyright (c) 1999-2018, by Zend Technologie php -m |grep mbstring mbstring2. 코드샘플 실행
-
트레이트개발/php 2016. 8. 7. 11:49
처음에 트레이트 라는 부분을 읽었을때인터페이스와 클래스에 역할을 둘다 할수 있다고 했을때 무슨소리인지 정말 헷갈렸는데 예제를 보고 쉽게 이해할수 있었다.원본언어인 자바에는 없는 영역이여서 그런가. 일단 인터페이스를 만들면 무조건 구현하여야 하기때문에 다른클레스에서 각자 구현하고자 하는부분이 다를때는 상관없지만 같은 코드를 재구현 해야 한다고 하면 DRY 하지 못하다. (Do not repeat yourself) 그리고 상속을 통해서 처리할때 리스코프 치환원칙을 (LSP) 에 어긋날수있다.그래서 처음에 트레이트를 접했을때그냥 클래스를 인스턴스에 올리고 인스턴스에서 꺼내쓰면 되지 않을까라는 생각을 했다가 , 그렇게 되면 상속과는 조금 다른 개념으로 접근되겠구나 라는 생각이 들었다. 트레이트 예제가 길어서....
-
네임스페이스개발/php 2016. 8. 7. 11:28
PHP 5.3.0 에서 도입되었다.PHP 코드를 운영체제의 파일시스템 디렉터리 구조처럼 가상 계층 구조로 구성하는 중요한도구다. 네임스페이스 선언 : namespace Symfony\Component\HttpFoundation; 맨앞에 있는 Symfony 가 벤더네임스페이스라 칭한다.벤더네임스페이스 -> 최상위 네임스페이스.그 하위로 있는 Component는 서브네임스페이스라 부른다. PHP 네임스페이스는 운영체제의 물리적 파일시스템과는 달리 가상 개념이며 파일시스템 디렉터리와 1:1로 대응할 필요가 없음.대부분 PHP 컴포넌트가 서브네임스페이스를 파일시스템 디렉터리에 맞춘다.PSR-4 (PHP Standard RecommendationPHP) 오토로더 표준과의 호환성을 위해서. 자 그럼 네임스페이스를 ..