2012-07-25 89 views
0

确定这似乎是一个愚蠢的问题,我当然应该知道答案,但我有一些怪异的行为在我的类之一的构造函数检查是否一个表存在,如果不是它创建它。php语句是否同步执行?

奇怪的是,当表不存在,如果调用构造函数多次那么它不看应该已经在第一构造函数调用创建的表。

是否所有的功能在PHP中调用同步?

例如:

f1(); 
f2(); 

是否解释等待f1()调用f2()前返回?

+0

你也许忘了'COMMIT'创建表后? – 2012-07-25 06:50:48

+0

我没有使用事务 - 并且表创建工作,它似乎不适用于头几个构造函数调用。随后的请求会正确检测表的存在,这只是第一次运行脚本时,该构造函数被多次调用,并且第一次正确地找到没有表并创建它,但接下来的调用却没有看到具有该表的表只是被创建并试图重新创建它...... – rgvcorley 2012-07-25 06:55:16

+0

这是......奇怪。我建议询问DBA.SE. – 2012-07-25 06:56:14

回答

4

在致电f2()之前,口译员是否等待f1()返回?

是的,即使f1()启动其他异步任务。

+0

谢谢!我有点知道答案必须是肯定的 - 这取决于执行的顺序,否则可行的方法...我只是想不通,为什么我收到我的行为...... – rgvcorley 2012-07-25 06:51:16

+0

@rgvcorley构造在任何情况下都不能被调用超过一次,可能是你多次启动对象或者任何隐藏的触发器都会这样做。 – 2012-07-25 07:25:15

+0

@RupeshPatel正确的 - 每次创建对象时,构造函数被调用;) – rgvcorley 2012-07-25 08:28:52