作者HuangJC (吹笛牧童)
看板PHP
标题Re: [请益] 关於传递变数
时间Sun Jul 20 04:26:06 2008
: 推 allanshen :用SESSION也可以,这就是在server端了 07/20 00:35
YES,这个也可以
话说如果有看过我系列问题的板友大概知道
最近我在做 CakePHP & PhpBB2 的整合
本来我就是想用 session,可是失败了..
这样说好了
如果是从头撰写一个自己完全了解的程式,session 应该是很好用的
但我面临的,是同事写好的 CakePHP 架构程式
以及网路上抓来已经很成熟的 PhpBB2
两边都已经完整了,各有各的 session
那请问 session 的观念要如何整合呢?
又 PhpBB2 上面关於帐号,有一个全域变数 $userdata
我们在 CakePHP 上面是 $User 好了..
错开的话那就好命..
如果没错开呢?又可能全部的变数都错开吗?
如果是有 VC++ & DLL/COM & BCB 等程式联结经验的工程师就会知道
一个程式可以单独运作
和写成多人单机版被 multithread 运作,有些重点是要注意的
就是你的全域变数生命周期到底是怎麽计算的?会不会互相洗来洗去?
要不要设同步物件?
这简直是一样的问题
所以...我败了
放弃用 session *_*
什麽是 session 呢?
Client 端要求执行 Server 端程式时 (在这里字眼或许改成 浏览/网页)
带入一个 ID,足以代表 Client 端
只要每次执行时都带入这个 ID,就是同一个 Client 在执行
要有这种观念,所谓的全域变数才不会打架
(那我有另一个问题,可不可以有静态变数的观念? XD
也就是轻易的计数现在有多少人浏览这个网页
这个网页被浏览几次等等问题;这要有一个变数跨越所有 session)
在 PhpBB2 里,它有所谓的 session id,是自己产生的
用该 ID 去取用 DB
在 CakePHP 端也一样有自己维护的 session id
好吧,我收回那句话一半
session 还是很好用,只是我们自己维护
以 session 造成的 "资料存放在 Server 端"这句话
我们是自己做的 *_*
全部自己做当然就清楚状况
那一个变数到底是每个 session 各自不同,或者跨 session 共同使用
我们也就都清清楚楚了
举例来说,PhpBB2 里,想计算线上人数或浏览次数
你只要知道它在资料库的哪里就好了
如果它是每个 session 各一份,那就是各自不同
如果它是每个 session 都看到同一份,那就是跨 session (比如 board config)
我的确花了很多时间学习 PhpBB2,也得到一些较完整的概念
不过我还是想问:那 php 这个语言本身,怎麽实作 session & 产生 ID
session ID 是 Apache 会产生它,还是 php 产生它?
;;
刚才试了 session,搞懂一些观念
1.从 php.ini 里面,有规定 session 的行为
比如,session 档将存在哪里
2.session 档基本上就类似於 serialize
echo serialize($_SESSION) 看起来实在是差不多,但最精确的
echo session_encode 就是一模一样,将这个字串存起来,反向 call
session_decode($store) 就可以把 session 资料灌回
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.179.152
※ 编辑: HuangJC 来自: 61.59.179.152 (07/20 14:18)
1F:→ starjou :session 是阵列,你可以用 print_r 来观察 07/20 16:25