1. 有没有php的魔术函数 __sleep 和 __wakeup的例子
魔术函数 __sleep 和 __wakeup
serialize() 检查类中是否有魔术名称 __sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以清除对象并应该返回一个包含有该对象中应被序列化的所有变量名的数组。
使用 __sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。
相反地,unserialize() 检查具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建对象可能具有的任何资源。
使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务。
Following up to rkelly at NO dot whitley dot unimelb dot SPAM dot e dot au's note regarding __sleep()
__sleep expects you to return an array of object variables that are allowed to be serialized.
Not returning this array -will- result in your object not being serialized, and -will- cause headaches. If you need __sleep() to do cleanup:
1) do your cleanup
2) return the object variables in an array using the code from the comment from php at sharpdreams dot com (below)
search phrases to help people find this info:
php object will not (does not) work in session
session object will not work in subsequent page views
my object won't show up on next page
2. php中sleep()函数会不会大量销号系统内存或者CPU
会。
正常情况下php以最快速度执行完脚本,将执行结果传给浏览器。你要考虑有很多用户访问你网站的情况,因为执行脚本的时候被sleep了,导致每个用户浏览网页的时候php都需要更长的时间去执行你的脚本,而脚本执行完毕之前内存是一直被php引擎占用的。所以当访问用户多的时候,就会导致有很多php引擎的实例同时运行,占用很多内存,但是这些php引擎却受到脚本的指使而在那边sleep(说得粗俗一点就是占着茅坑不拉屎)(正常情况下是执行完以后内存就释放了)。就好像八行道的大马路,如果只有一个司机车子停在中间然后睡觉,其他道路暂时还能通;但是如果有八辆车的司机并排停在路中间睡觉,这马路就不要想畅通了
cpu的话……好像影响不大,最多就是操作系统在调度进程线程的时候要多检查几个而已,没感觉。
3. 关于php中sleep函数
定义和用法:
sleep() 函数延迟代码执行若干秒。
语法:sleep(seconds)
参数:seconds 描述:必需。以秒计的暂停时间。
返回值:
若成功,返回 0,否则返回 false。
错误/异常:
如果指定的描述 seconds 是负数,该函数将生成一个 E_WARNING。
例子:
<?php
echo date('h:i:s') . "<br />";
//暂停 10 秒
sleep(10);
//重新开始
echo date('h:i:s');
?>
输出:
12:00:08
12:00:18
4. 关于PHP的sleep()函数导致的问题
但是同时两次访问index1.php,第二个需要等第一个完成之后再等20秒才能正常显示,即第二个页面需要等40s才能正常显示
--------------------------------------
你是怎么同时2次访问index1.php的?
即第二个页面需要等40s才能正常显示
------------------------------------------
第二个页面也是index1?