PHP는 자료형을 선언하지 않는 언어이다 보니 
데이터를 비교할때 ==(느슨한 비교, 내부의 데이터만 비교) 보다는 ===(강력한 비교, 자료형과 데이터가 모두 일치해야 참)를 사용하는것이 좋다


실제 예로 


<input type="text" value=[]>

같이 front에서 배열 형태로 보내는 값을 back 단에서 ==으로 비교하게 될 경우에 문제가 생긴다



예를 들어

"abcd" == "abcd"  (True)

이렇게 비밀번호를 입력받아 비교하는 로직이 있을경우에 

front 쪽에서 배열로 보내서 비교를 하게되면 


[] == "abcd" (True)


True를 반환해버리는 오류가 발생한다 
PHP는 자료형이 없기때문에 특히나 조심해야 하는 부분

물론 이게 터질만큼 대충 짜논 사이트가 많지는 않겠지만 워낙 레거시 스타일로 작성된 PHP 사이트가 많아서 터질 가능성도 있다 혹은 오류가 나거나

참고 
http://phpcheatsheets.com/compare/

'Web Hacking' 카테고리의 다른 글

Mysql 프로시저 생성시 특수문자 escape  (0) 2017.08.03
Double Query Injection  (2) 2015.09.07
Procedure analyse()를 이용한 SQL Injection  (0) 2015.09.07
DataBase(information_schema)  (2) 2015.09.04
Group By SQL Injection  (1) 2015.08.24
<?php
define('LARAVEL_START', microtime(true));

require __DIR__.'/../../vendor/autoload.php';


$app = require_once __DIR__.'/../../bootstrap/app.php';

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);

$kernel->terminate($request, $response);


//클래스 생성
$elaClass = new \App\Http\Controllers\ElasticController();

//커넥션 생성
$elaClass->setClient();

//Data insert
$elaClass->insertCount();



라라벨에 컨트롤러로 등록된 코드를 cli로 실행하고 싶을 경우엔 위 코드대로 따로 파일을 만들어 실행하면 된다

다만 require와 require_once 부분의 경우 달라질수 있는데 상위 디렉토리로 올라갈때 laravel 루트 디렉토리가 되어야 한다

예를 들어 보자


DOCUMENT_ROOT는 /var/www/laravel/public 디렉토리이고 
위의 파일읜 /var/www/larvel/module/cli 디렉토리에 있을 경우 위 소스코드처럼 ../../ 두단계 상위디렉토리로 이동하여 실행해야 한다

그 이후엔 일반적인 Class 생성 및 메소드 실행방법이랑 똑같다 
다만 CLI로 돌아가기 때문에 시각적으로 확인할 방법이 없으므로 따로 로그는 남기도록 해서 잘 작동하는지 확인 할 수 있는 방법을 마련해놓는게 좋다



CLI로 실행 할 경우 PHP 위의 코드가 있는 파일을 고대로 php로 실행 시키면 된다


php /var/www/laravel/module/cli/CliElastic.php


이렇게 실행시키면 laravel의 컨트롤러에 있는 코드를 cli로 실행 시킬수 있다


크론탭으로 등록 시키려 할경우엔 아래처럼 등록하면 2분마다 작동한다

*/2 * * * * php /var/www/laravel/module/cli/CliElastic.php


이렇게 하면 매 1분 마다 실행된다


* * * * * php /var/www/laravel/module/cli/CliElastic.php


'Web Development > PHP' 카테고리의 다른 글

PHP mcrypt 함수 마이그레이션  (0) 2018.12.20
MVC 패턴  (0) 2016.02.08
파일 업로드 기능을 구현할떄의 php.ini 설정  (0) 2016.02.08

현재 고민하고 있는 이슈가 web api를 제공해야 하는데 현재 사용하고 있는 기술스택(c# .net)으로는 속도의 한계(?)가 느껴지는것 같아서 
다른 개발 스택의 조합중 가장 빠른 성능을 제공하는 웹 언어를 찾아야 한다
일단 웹 언어로 가장 대중적인 리스트를 뽑자면 

PHP

JSP

ASP

C# .NET

NodeJs

Python

Ruby

Go

등등이 있다

내가 뽑고자 하는 데이터는 



I/O 성능

반복문

DB 연결속도

HTTP REQUEST 성능

json 형식 처리 지원 여부

string 처리 속도

ElasticSearch 지원 여부


정도다 


문제는 저 위에 언어별로 대체 어떻게 테스트 하냐는 거다


동일한 스펙의 가상PC에서 최소 프로그램만 깔고 cpu/ram/hdd 상황을 모니터링 하면서 같은 이슈를 얼마나 빨리 처리하는지를 비교해야 하나?

아니면 제한시간동안 가장 많은 일을 하는걸 비교해야 하나 ?


비교 방법을 선택하는것도 문제지만 

가장큰 문제는 테스트 환경을 갖추는 것이다


저 위에 사용되는 언어별 플랫폼만 하더라도


IIS, NGINX, DJANGO, APACHE까지 4개나 된다 

OS별 조합을 따지면 그 수는 꽤나 많다


일단 인터넷에서 제일 궁합 좋다는 조합으로 다가 서버를 세팅 한 후 각 언어별 benchmark test를 할 예정이다


사실  위의 언어들 중에 NodeJS랑 Go가 가장 기대된다 
제일 공부해본적 없고 인터넷상으로도 나름 괜찮을 평을 받고 있고

국내외 대용량 API 서버들도 많이들 사용한다는 이야기를 들었기 때문이다 


뭐... 테스트 개발 환경 세팅은 나중에...

'Web Development' 카테고리의 다른 글

vim setting  (0) 2016.02.24

+ Recent posts