2012-07-25 2 views
0

Ok 이것은 바보 같은 질문 인 것 같아서 대답을 확실히 알고 있어야하지만, 내 클래스 중 하나의 생성자가 테이블이 존재하는지 확인하는 이상한 행동을합니다.PHP 문이 동 기적으로 실행됩니까?

이상한 점은 테이블이 존재하지 않는 경우입니다. 생성자가 여러 번 호출되면 첫 번째 생성자 호출에서 생성 된 테이블이 표시되지 않습니다.

PHP에서 모든 함수 호출이 동기식입니까? 예를 들어

:

f1(); 
f2(); 

f1()의 통역 대기가 f2()를 호출하기 전에 돌아갑니다합니까?

+0

테이블을 만든 후에'COMMIT'을 잊어 버리셨습니까? –

+0

트랜잭션을 사용하지 않고 테이블 생성이 작동하지만 처음 몇 번의 생성자 호출에서는 작동하지 않는 것처럼 보입니다. 후속 요청은 테이블의 존재를 올바르게 감지합니다. 스크립트를 처음 실행하면 생성자가 여러 번 호출되고 처음으로 테이블을 올바르게 찾지 못하고 생성하지만 다음 호출에서는 테이블을 볼 수 없습니다 방금 만들어졌고 그것을 다시 만들려고 노력합니다 .... – rgvcorley

+0

그건 ... 이상합니다. 나는 DBA.SE에 묻는 것이 좋습니다. –

답변

4

f2()을 호출하기 전에 인터프리터가 f1()을 반환 할 때까지 기다릴 수 있습니까?

예, f1()이 다른 비동기 작업을 시작하더라도 그렇습니다.

+0

감사합니다! 나는 대답이 '예'가되어야한다는 것을 알았습니다. 실행 순서에 의존하는 프로 시저가 그렇지 않으면 작동 할 것입니다 ... 나는 왜 내가 내가하는 행동을 얻고 있는지 알 수 없습니다 ... – rgvcorley

+0

@rgvcorley 생성자 모든 경우에 대해 두 번 이상 호출 할 수 없습니다. 개체가 여러 번 초기화되었거나 숨겨진 트리거가 해당 작업을 수행 할 수 있습니다. –

+0

@RupeshPatel correct - 객체를 만들 때마다 생성자가 호출됩니다.) – rgvcorley

관련 문제