PHP 5 모듈로 구현 된 "클래스"를 실행하는 데 필요한 설명이 필요합니다. 이 클래스는 생성자/소멸자를 포함하여 몇 가지 방법을 가지고 있으며, 다음과 같이 PHP 스크립트에서 나는 그것을 사용할 수 있습니다PHP 스크립트 실행 및 다중 스레드 환경 (PHP5 확장)
<?php
// --- construct
$c = new my_class("some argument");
// --- add data
foreach ($arr_of_elements as $k => $v) {
$c->add_element($v);
}
// --- execute algorithm
$c->execute();
// --- get result as xml format
$result = $c->get_result_as_xml();
// --- end of script (destruct)
?>
내 질문은 : 요청이 내 단일 스레드에서 위의 스크립트를 실행하게되면 아파치 2 서버의 PHP 모듈? 제 의견으로는 그렇게해야합니다.
일부 JNI 코드가있는 Java JVM을 사용하는 C에서 PHP5 확장을 구현했기 때문에이 질문을하고 있습니다. 위의 스크립트를 실행하면 클래스 생성자가있는 JVM에 연결되어 실제로 JNI 호출 용 래퍼) 소멸자가있는 JVM에서 분리됩니다. 디버깅 모드에서 아파치를 실행하면 (그리고 -X
을 사용하여), 스크립트는 charme처럼 실행되며, 다중 실행 (재 로딩)은 전혀 문제가되지 않지만, 아파치 2/PHP는 일반적인 멀티 프로세스 모드에서 JNI AttachCurrentThread
을 호출 한 후 JVM이 중지됩니다. 나는 해결책을 찾기 위해 그 문제를 추적하려고 노력한다.
실행중인 스레드 (ID 등)의 정보를 얻을 수 있습니까?
실행이 단일 스레드 실행인지 확인해야합니다.
나는
뭔가 불분명 경우 우분투 맑은 10.04 LTS
에 (소스에서 컴파일 된) PHP 5.2.16와 아파치를 사용하고, 알려 주시기 바랍니다. 정보 및 도움에 감사드립니다!안드레아스 당신이 modphp와 PHP는 prefork의 권장() 구성 apahce2을 가지고있는 경우에
PHP 내부와 Apache에 대해 조금이라도 통찰력을 갖고있는 사람이 있습니까? –