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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381477.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用phpdoc生成PHP文档

1. 下载phpdoc 官网地址&#xff08;已经N久没更新了&#xff0c;不知道是不是不想干了&#xff09;&#xff1a;http://www.phpdoc.org/&#xff1b;下载地址&#xff1a;http://sourceforge.net/projects/phpdocu/files/ 2. phpdoc -h 文件下载后解压&#xff0c;然后进入…

超好用的PHP注解生成Api接口文档工具,支持TP、Lavael、Hyperf、Webman等框架

✨特性 开箱即用&#xff1a;无繁杂的配置、安装后按文档编写注释即可自动生成API文档。轻松编写&#xff1a;支持通用注释引用、业务逻辑层、数据表字段的引用&#xff0c;几句注释即可完成。在线调试&#xff1a;在线文档可直接调试&#xff0c;并支持全局请求/Mock参数/事件…

PHP文档工具

PHP文档工具 ——phpDocumentor Easyphpe / 文 写文档是一项乏味却不得不做的工作&#xff0c;而编写API级的文档更是意味着大量的重复劳动和难以保持的一致性。这里我们要推荐给大家的&#xff0c;是支持PHP5语法分析的文档工具——phpDocumentor。 使用phpDocumentor不仅可以…

PHP写文件简介

PHP中有各种内置函数用于对文件执行各种操作。他们可能对文件进行创建、打开、读取、写入等操作。 PHP写入文件的功能 以下是 PHP 中默认可用的主要功能&#xff1a; 1. fopen() 首先&#xff0c;为了写入文件&#xff0c;我们必须知道如何创建该文件。这是在 open() 函数的…

前端笔试题1

HTML/CSS 题1&#xff1a; 1&#xff0e;使用CSS 让该节点不可见&#xff0c;方法越多越好。 <div class"hidden">Hi</div> 使用CSS 让节点不可见的方法有以下几种&#xff1a; 把 visibility 属性设置为 hidden&#xff0c;这样元素框不会被绘制&…

inkscape制作向日葵

inkscape制作向日葵logo 双击打开inkscape 软件 2.创建一个五角星&#xff0c;填充相应的颜色 3.创建一个圆填充相应的颜色 把五角星增加圆角和辐条&#xff0c; 5.绘制向日葵的眉毛、眼睛、鼻子、嘴巴 6.把圆和五角星重叠在一起&#xff0c;选中五角星——选择图层——层置…

Android_Butterfly_动画

Android_Butterfly_动画 运行效果 所需文件 MainActivity package com.example.a517_butter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; //imp…

matlab 绘花,MATLAB绘图花样一

多组数据在一张图中显示----hold on x = [5 20 40 60 80 100 120]; y = [-0.2 -0.36 -0.26 -0.24 -0.33 -0.41 -0.55]; y1 = [-0.15 -0.31 -0.21 -0.19 -0.28 -0.36 -0.5]; y2 = [-0.25 -0.41 -0.31 -0.29 -0.38 -0.46 -0.6]; plot(x,y); hold on; plot(x,y1); hold on; plot(x…

R语言笔记(一)

1.iris&#xff1a;鸢尾花数据集 Sepal&#xff1a;花萼 Petal&#xff1a;花瓣 Species&#xff1a;种数 2.sunflowerplot(iris[,4:5],col”gold”,seg.col”gold”) 表示画出向日葵的散点图&#xff0c;iris[,4:5]表示iris数据的第四、五列的数据画向日葵散点图…

python用turtle画太阳花_Python绘图——认识turtle小海龟

海龟作图&#xff0c;turtle是Python重要的标准库之一&#xff0c;我们可以编写指令让一个虚拟的小海龟在屏幕上来回移动。这个海龟带着一只钢笔&#xff08;pen&#xff09;&#xff0c;我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。 海龟作图最初源自20世纪60年代的…

向日葵android平板,向日葵远程控制 - 黑科技改变生活,让端游一秒变手游 - Android 应用 - iPad - 【最美应用】...

玩主机的看不起玩平台的&#xff0c;玩平台的看不起玩端游的&#xff0c;玩端游的看不起玩页游的&#xff0c;玩页游的还看不起玩手游的。 现在不要分什么彼此了&#xff0c;通过以下方法&#xff0c;想用手机玩平台游戏、玩端游、玩页游&#xff0c;可一次实现&#xff01; 手…

海龟画图 python太阳花_python画图之“小海龟”turtle

“小海龟”turtle是Python语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的控制&#xff0c;在这个平面坐标系中移动&#xff0c;从而在它爬行的路径上…

python turtle库制作可爱的假向日葵

效果图&#xff1a; 是不是很可爱呢&#xff01;现在就带各位朋友们亲手做一个假向日葵花吧 # sun flower 向日葵 # 创作人&#xff1a;李国庆 # 扣扣&#xff1a;1974914843 import turtle as tt.begin_fill() t.pendown() t.circle(60) t.fd(14) t.fillcolor(yellow) t.end…

windows系统链接UBuntu向日葵

参考链接&#xff1a; 1、https://www.pianshen.com/article/67791913548/ 2、https://www.codeleading.com/article/8793979874/ 3、https://www.linuxidc.com/Linux/2011-07/39491.htm 解决方法 1.官网下载: https://sunlogin.oray.com/download/ 双击deb安装&#xff0c;然…

python画行向日葵,基于matplotlib的向日葵散点图

我不知道有什么matplotlib实现&#xff0c;但不难做到。在这里&#xff0c;我让hexbin进行计数&#xff0c;然后遍历每个单元格并添加适当数量的花瓣&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib import colors np.random.seed(0) n 200…

python用turtle画太阳花_详解python使用turtle库来画一朵花

看了群主最后成像的图片&#xff0c;应该是循环了36次画方框&#xff0c;每次有10度的偏移。 当然不能提前看答案&#xff0c;自己试着写代码。 之前有用过海龟画图来画过五角星、奥运五环、围棋盘等&#xff0c;所以感觉不难。 # !/usr/bin/env python # -*- coding:utf-8…

微信小程序隐私协议模板

在 设置 中找到 用户隐私保护 进行更新&#xff0c;如下图&#xff1a; 具体协议补充可参考如下&#xff1a; 为了分辨用户&#xff0c;开发者将在获取你的明示同意后&#xff0c;收集你的微信昵称、头像 为了显示距离&#xff0c;开发者将在获取你的明示同意后&#xff0c;收…

多线程与并发编程面试题总结

多线程与并发编程 多线程 线程和进程的区别&#xff1f; 从操作系统层面上来讲&#xff1a;进程(process)在计算机里有单独的地址空间&#xff0c;而线程只有单独的堆栈和局部内存空间&#xff0c;线程之间是共享地址空间的&#xff0c;正是由于这个特性&#xff0c;对于同…

linux鲁班猫代码初尝试[编译镜像][修改根文件系统重编译][修改设备树改屏幕为MIPI]

编译镜像 官方百度云盘资料:https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/quick_start/baidu_cloud/baidu_cloud.html 解压虚拟机压缩包:"鲁班猫\8-SDK源码压缩包\开发环境虚拟机镜像\ubuntu20.04.7z"后既可以用VMware打开,打开后可以看到已经有…

idea 快捷键代码行标记并快捷跳到标记行(搬砖必备)

idea有一个组合快捷键 非常好用 快捷键1 标记代码行&#xff08;左边的行数会出现一个1&#xff0c;代表着已经标记了&#xff09;&#xff1a; ctrlshift1 快捷键2 迅速跳到标记行&#xff08;直接抵达砖厂&#xff0c;哈哈&#xff09;&#xff1a; ctrl1 这边给大家送上…