|
发表于 2003-6-2 14:18:44
|
显示全部楼层
{Q:
To superbug :
其实我要知道的问题是:web服务器(apache)调用页面时,是不是一次完成一个页面中的所有程序逻辑?而不象我在上贴中描述的那样,两个页面的程序相互干扰。}
apache执行php的过程是(如果你指的是lamp的组合),诸多httpd进程中的一个接受客户请求(request可能是get或者post),发现请求的是php页面,于是将请求作为参数,呼叫php引擎对php页面中的代码进行解析执行,要求php引擎返回结果给自己,最后将结果回传给客户的浏览器。而php文件中的相关操作都是一次执行完毕的,包括对数据库的操作等。
上述整个过程是一次事件(客户发送请求)之中发生的,和其它事件无关;平时apache就静静的等在那里(无状态),等待有事件来触发它执行一系列的操作。两个客户对相同页面的两次访问是两个事件,被apache分别独立执行,它们之间的沟通点可能只是操作了相同的数据库中的记录而已。http协议是无状态的,这点很重要。
你所描述的情况其实需要你的数据结构上加以处理,即用户数据表中的uid或username什么的字段要唯一。如果全靠php来判断,完全不靠数据库的能力,那还真是个问题 不过,好像不会有人这么用吧?除非,自己和自己过不去
btw,如果你用的是mysql4,那你该多看看mysql4的文档。InnoDB表是支持事务的,虽然性能上有一些牺牲。 |
|