PHP4用户手册:函数-flock

 更新时间:2016年11月25日 15:19  点击:1991
H1>
(PHP 3>= 3.0.7, PHP 4 >= 4.0.0)
flock -- 锁定文件
描述
 
bool flock (int fp, int operation [, int wouldblock])
 
PHP 支持在访问文件时完全的锁定文件(这意味着所有的访问程序不得不使用相同的锁定方式,或者它不工作)。
flock() 运行在打开的文件指针fp之上。
operation 是下列值之一:
 
获得一个共享锁(可读),设置为LOCK_SH (PHP 4.0.1以下设置为1);
获得一个互斥锁(只有自己可写),设置为LOCK_EX (PHP 4.0.1以下设置为2);
释放锁(释放共享锁或互斥锁),设置为LOCK_UN (PHP 4.0.1以下设置为3);
如果当锁定时你不想flock() 块,添加LOCK_NB (PHP 4.0.1以下设置为4)。
flock() 允许你在每一个平台上能被使用简单的读/写模式 (包括众多的 Unix 派生系统和 Windows系统). 如果你想锁住块,你可以设置第三个参数为 TRUE (EWOULDBLOCK errno condition)
flock() 返回 TRUE 为成功;返回 FALSE 为失败 (e.g. when a lock could not be acquired).
注意: 因为 flock() 需要一个文件指针,you may have to use a special lock file to protect access to a file that you intend to truncate by opening it in write mode (with a "w" or "w+" argument to fopen()).
 
警告
flock() 在NFS和其他的网络文件系统中将不工作。详细资料请查阅你的操作系统文件。
有些操作系统 flock() 的执行需要在一定的执行级别上。当使用多线程系统API象ISAPI,你不可以依赖flock()去保护文件,相反其他的 PHP 脚本正在同一的服务器的实例中平行线程中运行。
 
 

H1>
(PHP 3, PHP 4 >= 4.0.0)
usleep -- 暂停执行多少毫秒
描述
 
void usleep (int micro_seconds)
 
usleep() 函数暂停程序执行由 micro_seconds指定的毫秒数
参见 sleep().
注意:这个函数不能工作在 Windows 操作系统中。

H1>
(PHP 3, PHP 4 >= 4.0.0)
fopen -- 打开文件或URL
描述
 
int fopen (string filename, string mode [, int use_include_path])
 
如果filename 以"http://"开始 (大小写不敏感), 则本函数用HTTP 1.0连接打开指定的服务器,这个页面被使用HTTP GET模式来请求,文件指针指向被返回的服务器响应文件的起始处。一个带有请求虚拟主机的基本名字的'Host:'头被发送。
注意,这个文件指针允许你重新找回响应的the body :你不能使用这个函数存取 HTTP 响应头。
在PHP 4.0.5以下不能重定向HTTP句柄。
 Because of this, directories must include trailing slashes.
如果filename 以"ftp://"开始 (大小写不敏感),一个指定的ftp连接服务器被打开,返回一个被请求文件的指针。如果这个服务器不支持被动ftp模式,将发失错误。你可以经过ftp任意的为读或写打开文件(但不能两者不能同时)。
如果filename 是 "php://stdin", "php://stdout", 或 "php://stderr"其中之一,则相应的输入输出流将被打开地。
(这是在PHP 3.0.13中引入的;在早期版本中,这个文件名象 "/dev/stdin" 或 "/dev/fd/0"这样去使用来访问输入输出流)。
如果filename 是以别的方式开始的,这个文件将被从文件系统中打开,返回一个打开文件的指针。
如果打开失败,则返回FALSE。
mode 可以为下面任何一个:
 
'r' - 只读打开,指针指向文件开始;
'r+' - 为读写打开,指针指向文件开始;
'w' - 只写打开,指针指向文件开始,文件大小清零。如果文件不存在,则新建;
'w+' - 为读写打开,指针指向文件开始,文件大小清零。如果文件不存在,则新建;
'a' - 为追加打开,指针指向文件结尾。如果文件不存在,尝试新建;
'a+' - 为读写打开,指针指向文件结尾。如果文件不存在,尝试新建。
注意: mode 可以包含字母 'b'。这仅仅在在系统区分二进制和文本文件才有用。
 (i.e. Windows. 它在Unix中是无用的)。如果不需要,它将被忽略。
如果你想在include_path中搜索文件,你可以使用可选的第三个参数并把它设置为"1"。
例1. fopen() 例
$fp = fopen ("/home/rasmus/file.txt", "r");
$fp = fopen ("/home/rasmus/file.gif", "wb");
标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头
与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明,可以参 RFC 2068 官方文件
(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 资料前,需先
传完所有的标头。
注意: 传统的标头一定包含下面三种标头之一,并只能出现一次。
Content-Type: xxxx/yyyy
Location: xxxx:yyyy/zzzz
Status: nnn xxxxxx
在新的多型标头规格 (Multipart MIME) 方可以出现二次以上。
使用范例
范例一: 本例使浏览器重定向到 PHP 的官方网站。
Header("Location: http://www.php.net");
exit;
>?
范例二: 要使用者每次都能得到最新的资料,而不是 Proxy 或 cache 中的资料,可以使用下列的标头
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
>?
范例三: 让使用者的浏览器出现找不到档案的信息。
header("Status: 404 Not Found");
>?
范例四:让使用者下载档案。
header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=文件名");
header("Content-Description: PHP3 Generated Data");
>?
主服务器设置

  Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。对于使用虚拟主机的情况,除了在虚拟主机的定义项中覆盖的设置之外(有的设置必须重新定义),这里的设置也是虚拟主机的缺省设置。
 

  Port 80
  Port定义了Standalone模式下httpd守护进程使用的端口,标准端口是80。这个选项只对于以独立方式启动的服务器才有效,对于以inetd方式启动的服务器则在inetd.conf中定义使用哪个端口。
 

  在Unix下使用80端口需要root权限,一些管理员为了安全的原因,认为 httpd 服务器不可能没有安全漏洞,因而更愿意使用普通用户的权限来启动服务器,这样就不能使用80端口及其他小于1024的端口,而必须使用大于 1024的端口来启动httpd,一般情况下8000或8080也是常用的端口。而Apache httpd服务器本身可以在以root权限打开80端口后再改变为普通用户身份进行运行,这样就减少了危险性,因而就不需要考虑这个安全问题。但是如果普通用户也想安装配置自己的WWW服务器,那么就不得不使用大于1024的端口。
 

  User nobody
  Group nogroup
  User和Group配置是Apache的安全保证,Apache在打开端口之后,就将其本身设置为这两个选项设置的用户和组权限进行运行,这样就降低了服务器的危险性。这个选项也只用于 Standalone模式,inetd模式在inetd.conf中指定运行Apache的用户。由于服务器必须执行改变身份的setuid()操作,因此初始进程应该具备root权限,如果是使用非root用户来启动Aapche,这个配置就不会发挥作用。
 
  缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了服务器本身和由它启动的CGI 进程没有权限更改文件系统。在某些情况下,例如为了运行CGI与Unix交互,也需要让服务器来访问服务器上的文件,如果仍然使用nobody和nogroup,那么系统中将会出现属于nobody的文件,这对于系统安全是不利的,因为其他程序也会以nobody和nogroup的权限执行某些操作,就有可能访问这些nobody拥有的文件,造成安全问题。一般情况下要为Web服务设定一个特定的用户和组,同时在这里更改用户和组设置。
 

  ServerAdmin you@your.address
  配置文件中应该改变的也许只有ServerAdmin, 这一项用于配置WWW服务器的管理员的email地址,这将在HTTP服务出现错误的条件下返回给浏览器,以便让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为WWW服务器的管理员,通过邮件服务器的别名机制,将发送到webmaster 的电子邮件发送给真正的Web管理员。
[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31