IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP有关文件 -> 正文阅读

[PHP知识库]PHP有关文件

目录

1.文件环境变量

2.文件相关知识

3.有关文件函数

2.写文件

3.关闭文件:

4.其他函数


1.文件环境变量

 <?php
echo $_SERVER['DOCUMENT_ROOT'] .PHP_EOL; //根目录的路径
echo $_SERVER['PHP_SELF'] .PHP_EOL;//从根目录到文件的路径
echo $_SERVER['SCRIPT_FILENAME'] .PHP_EOL;//文件的绝对路径
echo $_SERVER['REQUEST_METHOD'] .PHP_EOL;//请求方法

2.文件相关知识

. 表示当前目录

.. 表示当前目录的上一级目录。

类似于LInux一样,创建文件要么从根目录开始,要么当前目录

YK文件夹下面有sourcce文件,YK文件夹和Default在同一目录下,所以只可以先进入上一级目录,才可以进入Default文件

在PHP中创建文件时,如果想要创建的文件在某个目录下,该目录必须要存在

3.有关文件函数

fopen()函数返回一个文件指针,该指针指向文件的首地址

fopen('文件名',’打开方式‘);

$fp = fopen("$document_root/orders.txt",'ab');
模式模式名称意 义
r只读读模式一打开文件,从文件头开始读
r+只读读写模式——打开文件,从文件头开始读写
w只写写模式一一打开文件,从文件头开始写。如果该文件已经存在,将删除所有文 件已有内容。如果该文件不存在,函数将创建这个文件
w+只写写模式一一打开文件,从文件头开始读写。如果该文件已经存在,将删除所有 文件已有内容。如果该文件不存在,函数将创建这个文件
X谨慎写写模式打开文件,从文件头开始写。如果文件已经存在,该文件将不会被打开, fopen()函数将返回false,而且PHP将产生一个警告
*X+*谨慎写读/写模式打开文件,从文件头开始写。如果文件已经存在,该文件将不会被 打开,fopen。函数将返回false,而且PHP将产生一个警告
a追加追加模式一打开文件,如果该文件已有内容,将从文件末尾开始追加写,如 果该文件不存在,函数将创建这个文件
a+追加追加模式一打开文件,如果该文件已有内容,将从文件末尾开始追加写(或 者读),如果该文件不存在,函数将创建这个文件
b二进制二进制模式一用于与其他模式进行连接。如果文件系统能够区分二进制文件 和文本文件,你可能会使用它。Windows系统可以区分;而UNIX则不区分。推 荐一直使用这个选项' 以便获得最大程度的可移植性。二进制模式是默认的模式
*t*文本用于与其他模式的结合。这个模式只是Windows系统下一个选项。它不是推荐 选项,除非你曾经在代码中使用了b选项

2.写文件

fwrite($fp, $outputstring, strlen($outputstring));

$fp,:文件指针,可以理解为从哪个地方开始写

$outputstring,:要写的内容,注意:文件中的空格是’,'\t',换行是\n

?strlen($outputstring):写入的文件长度

调用这个函数的前提是,要以写的方式打开文件

3.关闭文件:

fclose($fp);

打开文件之后一定要关闭

4.其他函数

1.feof($fp),如果文件指针指向文件末尾则返回true,否则返回false

2.每次读取一行数据:

$string = fgets($fp)

$string = fgetss($fp,【length,tags】)

$arr =fgetcsv()

3.读取整个文件

$int = readfile(文件路径,【include_path】);

调用readfile()函数将打开这个文件,并且将文件内容输岀到标准输出(浏览器)中, 然后再关闭这个文件。

4.读取一个字符

$ char = fgetc($fp)

<?php
$fp = fopen('order.txt', 'rb');

while(!feof($fp))
{
    $char = fgetc($fp);
    echo $char;
}

fclose($fp);

5.读取任意长度

$ string = fread($fp,length);

6.文件是否存在:$int = file_exists(文件名) (判断文件是否存在)

if(file_exists("text"))//filesize(文件名)
{
    echo "<p>文件存在</p>";
}
else
{
    echo "<p>文件不存在</p>";
}

7.确定文件大小: $int = filesize(文件名); (结合fread()函数,可以使用它们一次读取整个 文件)

8.删除一个文件:$inttrue = unlink(文件名)

9.文件锁定

假设遇到这种情况,两个客户试图同时订购同一件商品(这种情况并不少见,尤其 是当网站上遇到某种程度的网络堵塞时)。如果一个客户调用fopen()函数打开一个文件 并且开始写这个文件,而此时其他客户也调用了 fopen()函数打开这个文件并且要写这个 文件,将会出现什么情况呢?文件的最终内容是什么?第一个订单后面就是第二个订单 吗?还是恰好相反呢?订单是第一个客户的还是第二个客户的?或者将变成一些没用的东 西,就像两个订单交错在一起?这些问题的答案取决于操作系统,但是,通常都是不可 知的。

为了避免这样的问题,可以使用文件锁定的方法。在PHP中,文件锁定是通过flock() 函数来实现的。当一个文件被打开并且在进行读写操作之前,应该调用这个函数。

flock()函数原型如下所示:

bool flock (resource fp,?int operation [,?int ^.wouldblock])

还必须将一个指向被打开文件的指针和一个表示所需锁定类型的常数作为参数传递给 这个函数。如果文件锁定成功,其返回值为true,否则为false如果获得文件锁将导致当 前的进程被阻塞(也就是,不得不等待),可选的第3个参数将包含值trueo

operation参数的可能值如表下

操作值

意义

LOCK_SH

读操作锁定。这意味着文件可以共享,其他人可以读该文件

LOCK_EX

写操作锁定。这是互斥的,该文件不能共享

LOCK_UN

释放已有的锁定

LOCK_NB

防止在请求加锁时发生阻塞(Windows系统不支持)

如果打算使用flock函数,必须将其添加到所有使用文件的脚本中;否则,就没有任 何意义°

请注意,flock。函数无法在NFS或其他网络文件系统中使用。它还无法在其他更早不 支持文件锁定的文件系统中使用,例如FATO在某些操作系统中,它是在进程级别上实现 的,因此,如果你在多线程服务器API中使用,该函数也无法正确使用。

要在这个示例中使用flock()函数,可以对processorder.php脚本进行如下所示的修改:

@ $fp = fopen ("$document_root/. . /orders/orders. txt '*, ' ab1);

flock($fp, LOCK_EX);

if (!$fp) (

echo "<p><strong> Your order could not be processed at this time.

Please try again later.</strong></p></body></htTnl>M?;

exit;

}

fwrite($fp, $outputstring, strlen($outputstring));

flock($fp, LOCK_UN);

fclose($fp);

还应该在vieworders.php脚本中添加如下所示的文件锁:

@$fp = fopen("$document_root/../orders/orders.txt", 'rb');

flock($fp, LOCK_SH); // lock file for reading

// read from file

flock($fp, LOCK_UN); // release read lock

fclose($fp);

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:18:24  更:2022-05-12 16:18:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 7:23:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码