对OO不是很了解。
平常的项目中有许多公共的,操作频繁的函数。
我现在想把那些函数进行分类封装。静态方法一般是在不涉及到对象属性,状态时使用,一般通过传入值,在方法内部操作并返回值。(网上看的,不知道对不对)方法一:
static function delfile($path){
if(file_exists($path)){
if(is_file($path)){
@unlink($path);
}
}
}
问题:并发的时候,如:user1删除file1,user2删除file2,会不会出现user1删除file2,user2删除file1或者只删除了file1,或者都没删除???(我的理解是互不影响)方法二:
static function IP($SAFEKEY){
$IP=$_SERVER["REMOTE_ADDR"];
return $IP;
}
问题:user1是ip1,user2是ip2,会不会出现user1得到ip2或其他情况???方法三:
static function rands($num){
$a="YqVO8wAeK1U6DrTtyI4BuGioLp2CaPsJdfM3SgFh0ZjWklEz7NxRc9vHbX5nQm";
for($i=0;$i<$num;$i++){
$str.=substr($a,mt_rand(0,strlen($a)-1),1);
}
return $str;
}
rands(4);
问题:排除在很小很小的几率下user1和user2会得到相同结果可能。在系统或线程或某些情况下,user1和user2是否会得到相同的结果。
平常的项目中有许多公共的,操作频繁的函数。
我现在想把那些函数进行分类封装。静态方法一般是在不涉及到对象属性,状态时使用,一般通过传入值,在方法内部操作并返回值。(网上看的,不知道对不对)方法一:
static function delfile($path){
if(file_exists($path)){
if(is_file($path)){
@unlink($path);
}
}
}
问题:并发的时候,如:user1删除file1,user2删除file2,会不会出现user1删除file2,user2删除file1或者只删除了file1,或者都没删除???(我的理解是互不影响)方法二:
static function IP($SAFEKEY){
$IP=$_SERVER["REMOTE_ADDR"];
return $IP;
}
问题:user1是ip1,user2是ip2,会不会出现user1得到ip2或其他情况???方法三:
static function rands($num){
$a="YqVO8wAeK1U6DrTtyI4BuGioLp2CaPsJdfM3SgFh0ZjWklEz7NxRc9vHbX5nQm";
for($i=0;$i<$num;$i++){
$str.=substr($a,mt_rand(0,strlen($a)-1),1);
}
return $str;
}
rands(4);
问题:排除在很小很小的几率下user1和user2会得到相同结果可能。在系统或线程或某些情况下,user1和user2是否会得到相同的结果。
用户指定的path不同,当然不会删除错。二:不会有错
根据客户来得到 ip,不会有影响三:相同机率很小。
mt_rand散播种子是随机的。
用户1和2,得到相同种子是较小的。应该说是短期内。。时间长,得到结果多,相同还是较多的,。____________
以上仅为个人意见
不会问题:排除在很小很小的几率下user1和user2会得到相同结果可能。在系统或线程或某些情况下,user1和user2是否会得到相同的结果。
不会
其实你有一个很大的误区,尽管php可以运行于进程(cgi方式)或线程(模块方式)中。
但php中的任何变量、对象...(当然包括静态的)都只在当前进(线)程中有效
唠叨大哥,能稍微具体点解释一下:
但php中的任何变量、对象...(当然包括静态的)都只在当前进(线)程中有效吗?我在网上查到的是说,静态类在内存中只存在一份,所以我就在想访问1和访问2同时执行某个静态方法的时候,会不会产生并发时的数据错误。
我主要是在某些地方,某些情况多节约点系统开销。