Y
yjlucky
Unregistered / Unconfirmed
GUEST, unregistred user!
看了在 delphi盒子 发的程序 “Web中使用Fastreport在ActiveX调用打印例子”
http://www.delphibox.com/article.asp?articleid=1652
我试了一下其中php的例子,发现在php中调用 new COM("printx.adocon" 这个动态连接库的时候,它会找到原来已经load的动态连接库地址,而不是创建一个新的实例。这样有两个问题:
1。如果动态连接库中有全局变量的话,会出现后一个进程改变前一个进程的全局变量,
2。如果其中一个网页调用这个动态连接库失败的话,会影响到其他网页(比如当你打开这个php网页,执行运行时间较长的报表,网页还没有执行完毕时就关闭该网页,该动态连接库就会从内存中unload,这样其他正在调用该动态连接库的网页就会调用失败)。
第一个问题的解决方法可以定义全局变量的时候采用 threadvar 定义。
第二个问题我想采用在php中调用new COM("printx.adocon"时,每次都创建一个新的实例来解决,但不知道方法,请指教。
另外,我想问问为什么 网页还没有执行完毕时就关闭该网页,该网页调用的动态连接库就会从内存中unload?
解决问题者,我另外给分!
http://www.delphibox.com/article.asp?articleid=1652
我试了一下其中php的例子,发现在php中调用 new COM("printx.adocon" 这个动态连接库的时候,它会找到原来已经load的动态连接库地址,而不是创建一个新的实例。这样有两个问题:
1。如果动态连接库中有全局变量的话,会出现后一个进程改变前一个进程的全局变量,
2。如果其中一个网页调用这个动态连接库失败的话,会影响到其他网页(比如当你打开这个php网页,执行运行时间较长的报表,网页还没有执行完毕时就关闭该网页,该动态连接库就会从内存中unload,这样其他正在调用该动态连接库的网页就会调用失败)。
第一个问题的解决方法可以定义全局变量的时候采用 threadvar 定义。
第二个问题我想采用在php中调用new COM("printx.adocon"时,每次都创建一个新的实例来解决,但不知道方法,请指教。
另外,我想问问为什么 网页还没有执行完毕时就关闭该网页,该网页调用的动态连接库就会从内存中unload?
解决问题者,我另外给分!