2012-02-08 70 views
0

PHP是否具有像Java一样的机制?在我的项目中,不同的用户可以继续进行同一事务在php或zend框架中同步

作为示例,我向具有付款详情页面URL的邮件发送给不同用户。因此他们可以同时查看该页面。他们也可以继续进行同样的交易。我想在用户已经查看页面时为用户拒绝(显示消息)该页面。在Java中,我们可以使用同步对象。我如何在PHP或zend框架中做到这一点?

回答

3

PHP不像Java。

每个请求都在一个单独的堆栈中运行,并带有单独的变量。您只能使用扩展名,如memcache等在PHP中共享对象。

我的建议是使用文件系统的锁定机制。例如:

<?php 
$fp = fopen($filename,"w"); // open it for WRITING ("w") 
if (flock($fp, LOCK_EX)) { 
    // do your stuf here 
    flock($fp, LOCK_UN); // unlock the file 
} else { 
    // flock() returned false, no lock obtained 
    print "Could not lock $filename!\n"; 
} 
?> 
+0

我可以锁定它。但是用户可能会关闭该选项卡。所以我们无法解锁这个过程。它会永远锁定。它如何处理? – 2012-02-08 11:04:16

+0

Aaaarghhh!唯一比通过会话传递参数更糟的是使用文件作为数据库 – symcbean 2012-02-08 12:38:22

+0

@symcbean它仅用于锁定,不存储数据。 – igorw 2012-02-08 14:22:09

0

我努力理解你想在这里实现的东西 - 无论是在PHP和Java。看起来你想对数据集应用互斥锁 - 但这不是同步的副作用 - 不是它的目的。如果您使用会话ID和FSM来控制访问,则不需要这么做。