作者JoeHorn (狮子男)
看板PHP
标题Re: [请益] 伺服器变数
时间Thu Mar 20 16:10:41 2008
※ 引述《MrMarcus (请勿忘记密码)》之铭言:
: 我不知道各位有没有写过ASP或者ASP.net。ASP/ASP.net的Application变数
: 是一种在同一个Application范围内的所有页面,所有使用者,都可以存取
: 得到的变数。这里的使用者指的是前来浏览这个Application范围内网页的
: 访客,不是主机作业系统上的使用者。
我之前的文章有说到这段:
如果「user」是单一 PHP 系统的 web wlient ,那根本就不用来问伺服器级变数,
随便找个开放源码的 PHP 系统(phpBB、OSC、Gallery、...)都可以看到作法。
把资料放在 Config 档,或是放在後端 DB ,都可以解决。
有必要一定得用 application variables ?
: PHP透过auto_prepend_file在每个程式前面插入该程式,这虽然可以让每个
: 程式(以及使用者)共享某些资料,但是问题在於这些资料是不能被改变的。
: ASP/ASP.net程式可以用类似以下的方式读取Application变数:
: TotalUserLabel.Text = Application["TotalUser"].ToString();
: 但是除了读取,还可以把资料写到Application层级去:
: Application.Add("TotalUser", 100);
: 或者
: Application["TotalUser"] = 101;
: 整个app范围内的所有使用(访客)都会看到这个变数的改变。PHP的
: auto_prepend_file没有办法做到这个。虽然可以在这个档案里面放入一些
: 变数让每个程式(以及访客)都读取得到,但是当程式试图去「变更」这些
: 变数的资料的时候,这些变更影响的范围都只限於该支程式,该程式执行
: 完毕,下次执行的时候就又恢复成以前未变更的值了。或者顶多透过
: SESSION变数,让同一个访客浏览的多个页面都能看到之前的变更。
: 但是重点在於「其他访客」并无法看到这些「变更」。这也就是Application
: 层级变数跟session层级变数不同的地方。
您在这边讲「整个app范围内的所有使用(访客)都会看到这个变数的改变。PHP的
auto_prepend_file没有办法做到这个。」,下一段似乎直接驳斥了这一段的说法?
: PHP如果要做到对某个参数的变更,所有访客都看得到,那势必必须自己
: 实作一些方式把这些资料储存在某个地方(档案或者资料库或者甚至存在
: shared memory),另外也要自己实作一些方式去读取这些共用资料。
: 为什麽得自己实作?就是因为PHP本身没有提供咩。
办法是人想出来的,自己实做会比较差?
我在网路上看过一段话,意思大概是这样:
「如果你写的 code、应用的 library、使用的软体都是 well documented 的,
那你的成果并不是什麽了不起的旷世锯作。」
共勉之~
--
1F:推 鲶姐:id 开头是 的,都说我是正妹 \(^▽^)/
2F:推 柏油:我要去炸 id 开头是 的家<(  ̄^ ̄)︵θ☆( >_<)
3F:推 郑公:id 开头是 的最爱跟我一起分享 ~●
4F:推 张爸:id 开头是 的误我儿一生 (/‵Д′)/~ ╧╧
5F:推 硬兔:我最爱跟 id 开头是 的一起洗澡 <( ̄︶ ̄)>
6F:推 洨狐:我决定把 送进公海! (  ̄ c ̄)y▂ξ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.37.9