외부 프로그램 (ImageMagick의 gm
)과 함께 축소판을 생성하기 위해 약간의 클래스를 만들었습니다. 계급은 exec()
을 호출하여 gm.exe
을 호출하지만 동시 실행이 있고 열린 PHP 세션이있을 때 httpd.exe
이 고정되도록 PHP bug을 기록했습니다. 다음과 같은 임시 해결책이 있습니다.세션 감지에 권장되는 방법
session_write_close();
exec('gm convert -resize 100x100 source.jpg target.jpg');
session_start();
지금까지는 그렇게 좋았습니다. 이제 다른 현재 및 향후 프로젝트에서 미리보기 이미지 클래스를 다시 사용하고 싶습니다. 코드를 삭제하고 변경하지 않고 호출 할 수있게하려면 세션이 세션이 아닐 때 세션 해결 방법을 생략해야하며 프로그래밍 방식으로 처리해야합니다. 그렇지 않으면 내 썸네일 이미지 작성자가 자체적으로 세션을 시작하는 불쾌한 부작용을 갖게됩니다.
활성 세션이 있는지 제대로 감지 할 수 있습니까? 또는 다른 말로하면, 내 함수를 호출하는 PHP 스크립트가 session_id()
에 대한 호출을 발행했는지 그리고 운영 체제가 세션 파일을 잠그고있는 열린 핸들을 보유하고 있으므로 세션을 닫지 않았거나 파괴하지 않았는지 여부 따라서 다른 실행중인 프로세스에서 액세스 할 수 없기 때문에 httpd.exe
을 동결시킬 수 있습니다.
if(session_id()){
session_write_close();
exec('gm convert -resize 100x100 source.jpg target.jpg');
session_start();
}
하지만 스크립트가 지금까지 세션을 사용하는 경우 session_id()
들이이 시점에서 활성화되지 않은 경우에도, 값을 반환하는 것으로 나타났습니다 :
나는 이것을 시도했습니다. 스크립트가 session_write_close()
...으로 세션을 닫으면 내 미리보기 이미지가 다시 열립니다!
'할 수 없다'는 경우는 괜찮은 대답입니다. 모두에게 감사 드려요. –