개발 Q&A

제목 exec() 함수로 실행된 파일 내에서 $_SESSION값을 사용할 수 있나요?
카테고리 PHP
글쓴이 layman 작성시각 2017/06/02 14:46:47
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 15490   RSS

네이버페이 연동 중입니다.

스케줄러로 php파일을 실행하여 실행된 파일 내에서 $_SESSION 값(로그인 정보 등..)을 사용해야 하는데..

웹에서 동작하는 것도 아니고 exec('example.php') 이런 식으로 불려진 파일(example.php) 내에서 $_SESSION 값을 사용할 수 없는건가요?

 

DB에 값을 집어넣기 위해서 세션 값이 꼭 필요하거든요..

include 또는 require 함수로 실행된 파일이라면 그냥 내부에서 바로 사용하면 되지만.. exec()는 별개로 파일을 실행하기 때문에 $_SESSION 값이 없는 것 같네요.. ㅜ

 

방법이 있을까요?

 다음글 node.js 통해서 웹서버 생성시 오류 (1)
 이전글 오라클 DATE 타입으로 변경하고 싶습니다. (2)

댓글

배강민 / 2017/06/02 15:17:49 / 추천 0
exec('example.php ' . $_SESSION) 식으로 파라메터로 물려서 사용하면 될 수도 있어보이네요.
변종원(웅파) / 2017/06/02 15:18:08 / 추천 0

codeigniter가 아닌 일반 php인가요? ci면 native session이 아니라서 다르구요.

일반 php면 상관이 사용할 수 있습니다.

페이팔 방식을 보면 세션을 사용하지 못해서(?) 결과를 파일로 저장하고 그 파일을 읽어서 사용했습니다.

전상민 / 2017/06/02 16:17:16 / 추천 0

배강민님 말씀처럼 exec로 php 스크립트를 실행할 때 인수로 넘겨서 사용하면 될 것 같네요.

exec("example.php -user_id \"user_id\" -user_name \"user_name\");

or

$sessionData = json_encode($_SESSION);
exec("example.php -session_data {$sessionData}");

 http://php.net/getopt

layman / 2017/06/08 14:58:57 / 추천 0

웹 프로세스 중 exec()를 호출하는 것이 아니고,

배치 스케줄러로 일반 php파일을 바로 실행시키는 것이라 실행된 php파일에서 세션 값을 갖고 있지 않아서, exex()로 열 php파일에 $_SESSION으로 값을 넘겨줄 수가 없습니다.

제가 말을 어렵게 하는건가요? 흑..

변종원(웅파) / 2017/06/08 16:04:06 / 추천 0

layman/ 개념 자체가 다릅니다. 콘솔에서 cron으로 배치잡이 실행되는데 로그인한 세션 정보를 이용한다라는 것 자체가 모순입니다.

웹서버의 작동방식과 콘솔에서의 작동방식은 다릅니다. 위에 예를 든 페이팔방식일거 같은 예감이 드네요.

세션이 아니라 파일로 쓰고 그 값을 읽어서 사용하도록 바꿔보세요.

전상민 / 2017/06/08 17:09:52 / 추천 0

세션 드라이버를 DB로 사용하는 것도 방법이겠네요.

DB에 어떤값을 저장하는지는 모르지만 때에 따라선 쿼리 하나로 가능할 것도 같고요.