PHP学习之七:扩展函数库-文件系统、进程与网络

LNMP环境下开启php的扩展 LNMP一键安装用着挺爽的,但开启PHP扩展有点费事,今天记录一下开启PHP扩展的过程,以免自己以后再开扩展又去百度一大圈。 如果你想开启缓存加速类的扩展(比如memcache,redis等),请看这篇教程:http://lnmp.org/faq/addons.html 如果是开启其他的扩展,这里以PHP的calendar扩展为例: (在Linux下使用php -m命 阅读详情

     PHP的扩展函数库十分庞大,官方的非官方的,在这里只记录一些目前比较常用的扩展,对于这一部分,也只是记录其中一些核心的函数,不是一个全面记录。对于详细的扩展函数说明,需要在使用中参考PHP的用户手册。

    1 目录操作
     dir()  返回一个目录对象
     read()  遍历目录对象中的条目
     
<?php
$d=dir("./");


while($item=$d->read())
{
        echo $item;
        echo "\n";
}


$d->rewind();
$d->close();
?>


    2 文件系统操作
    
    dirname()        返回路径中的目录名部分
    basename()   返回路径中文件名部分
    chown chgrp  chmod  与同名的linux系统调用类似
    mkdir  mkdir copy rename delete unlink tmpname touch tmpfile umask与同名的linux系统调用类似
    disk_free_space()   disk_total_space()
    fopen  fread fwrite feof fflush fclose fseek ftell rewind等与同名C标准库函数功能类似
    file_exists() 检查文件与目录是否存在
    file()  将整个文件读入数组,每个下标对应文件的一行
    file_get_contents()  将整个文件读入到一个字符串,支持从文件的特定位置开始读取若干字符
    file_put_contents($file,$data)    将字符串数据写入到指定文件
    readfile()  readlink  将file或link内容直接输出
    fileatime filemtime filectime 取得文件的上次访问/修改/inode修改时间
    fileowner  filegroup  返回文件所有者及组的号
    filesize   filetype  fileperms  取得文件的大小、类型、权限
    fputcsv fgetcsv 从文件中读取csv格式的数据或将csv格式数据写入文件
    fstat  ftruncate   获取指针对应文件的stat信息/截断到给定的长度
    stat  根据文件名获取文件的stat信息
    is_dir  is_file is_link  is_executable is_readable is_writeable  is_uploaded_file  判断文件的属性
    move_uploaded_file  
    parse_ini_file  parse_ini_string   解析ini文件及字符串,返回一个关联数据,可以通过名称访问相关配置项
    pathinfo  返回关联数组,包含了dirname,basename,extname ,filename
    popen  pclose 打开/关闭指向进程的管道文件
    realpath()  返回绝对路径
    
    3 进程控制
    3.1 POSIX扩展

    posix_access($file,$mode)  查看文件的访问权限,可以由is_readable等几个函数代替
    posix_errno()  返回posix函数执行的上个错误
    posix_getcwd() 返回当前目录,与getcwd()相同
    posix_getgid()  geteuid()  getgid() getegied() getgroup()  getpgid()  getpgrp() getpid()  getsid等与同名linux系统调用类似
    posix_getlogin() 获取登录名称
    posix_getpwnam() 获取用户的详情
    posix_getrlimit()  获取资源限制
    posix_kill()  posix_times() 
    3.2 程序执行函数
     string exec($cmd, array &$output, int &$return_var)             执行外部程序,并返回输出的最后一行
     string shell_exec($cmd)   与`cmd` 功能一样,将返回程序的所有输出
     string  system()  执行命令,并显示输出,返回值为输出的最后一行
     escapeshellarg()    转义字符串以作为shell参数
     escapeshellcmd()  转义字符以作为shell命令
     proc_open()    执行程序,并打开一个管道用于读写相应的输入和输出
     proc_nice()      调整程序的优先级
     proc_close()    关闭打开的程序
     proc_terminate()    终止打开的程序   

    3.3 信号量、IPC与共享内存

    resource sem_get(int $key, [int $max_acquire=1[,int $perm=0666[,int $auto_release=1]]]) 返回一个SYSTEM V的信号量,首次调用时会创建,随后的各次调用会返回不同的标识符,但均访问同一个信号量。
    bool sem_remove(resource $handler)   从系统中移除指定的信号量,之后将不可再访问
    bool sem_acquire($handler)  在获得信号量之前一直阻塞
    bool sem_release($handler)  释放之前获得的信号量   

    resource msg_get_queue(int $key[,int $perms = 0666])  按key返回一个SYSTEM V的消息队列。首次调用时会创建,随后的各次调用会返回不同的标识符,但均访问同一个消息队列。
    boo msg_remove_queue($handler)  移除系统的消息队列,之后进程将不可再访问
    bool msg_send($queue, int $msg_type,$msg[,bool $serialize=true[. bool $blocking=true [, int &$errcode]]] )  向消息存入一个消息
    msg_recvive($queue, int $expect_type, &$msgtype, $maxsize, &$msg [, bool $unserialize=true [, $flag = 0 [,&$errcode ]]] )  从消息队列取出一个消息
    array msg_stat_queue($handler)   查看消息队列上的相关属性
    bool  msg_set_queue()  设置消息上的相关属性   

    resource shm_attach($key,$perms)  按key返回一个SYSTEM V的共享内存。首次调用时会创建,随后的各次调用会返回不同的标识符,但均访问同一个消息队列。
    bool  shm_remove($handler)   从系统中移除共享内存对象
    bool  shm_detach($handler)    与共享内存对象断开,但系统中仍存在相关对象
    bool  shm_put_var($hanlder ,$key, $val)  向共享内存设置数据
    mixed  shm_get_var($handler ,$key)   从共享内存取数据
    bool shm_remove_var($handler, $key)   从共享内存移除数据

    
    4 网络扩展
    4.1 URL扩展

    string base64_decode($str)        返回原串
    string base64_encode($str)        返回编码串
    array  get_headers($url,$b_hash)    返回指定URL服务器的响应头,若$b_hash为真,则返回关联数组
    string http_build_query(array $data)   将hash数组数据编码为http之后的请求字符串
    string rawurlencode($str)    根据RFC1738对URL进行编码
    string rawurldecode($str)    对URL进行解码   
    
<?php
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');
              
echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor


$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(get_headers($url));
/*
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
*/


    4.2 socket扩展

    resource socket_create($domain,$type,$protocol)  返回一个套接字描述符   
    socket_bind($sock,$ip,$port)    设定绑定
    socket_listen($socket,$backlog)    监听端口
    resource socket_accept($sock)    
    resource socket_connect($sock,$ip,$port)    连接远程地址与端口
    string socket_read($sock,$length)   从套接字上读取数据 
    int socket_write($sock,$str,$len)      从套接字上写数据
    int socket_recv/send($sock,$&buf,$len,$flag)      从套接字上接收与发送数据
    socket_recvfrom/sendto($sock,$&buf,$len,$flag,$&ip,$&port)   
    socket_get/set_option($sock,$level,$optname,[$optname])  设置套接字选项
    socket_set_nonblock($sock)    设置为非阻塞
    socket_getpeer/sockname($sock,$&ip,$&port)
    socket_strerror($errno)
    socket_clear_error($sock)
    
    4.3 网络工具
    array dns_get_record($hostname,$type,$&auth_ns,$&additional )   获取对应类型的主机名的DNS记录,可返回认证NS及附加信息  
    bool dns_check_record($name,$type)/checkdnsrr    type有MX,A,ANY,AAAA,ALL,若找到对应记录则返回T,否则为F
    dns_get_mx /getmxrr($host,array$& mxlist)  获取对应主机的MX记录
    resource fsockopen($ip,$port)    返回一个网络连接,相当于运行了socket_create和socket_connect
    string gethostbyaddr($ip)  gethostbyname1($host)  返回对应的域名或地址,若使用带1的函数,则返回一个地址数组
    getprotobyname/number()    
    getservbyname()/getservbyport() 
    string inet_ntop($in_addr)   
    string inet_pton($ip)
    long2ip()/ip2long()
    setsookie/setrawcookie($name,$val,$expier,$domain,)
    socket_get_status()
    socket_set_timeout()
ExcelHome 扩展函数库2.1.zip ExcelHome 扩展函数库 立即下载

相关推荐

金融数据自动化:从同花顺API到Excel的智能转换之旅

本文详细介绍了如何利用同花顺API实现金融数据自动化处理,并将其智能转换为Excel格式的全流程。通过Python编程和Excel高级技巧,读者可以掌握从数据获取、清洗到输出的完整解决方案,大幅提升金融数据分析的效率和准确性。文章特别强调了同花顺API的使用技巧和Excel自动化输出的最佳实践。

sql99的博客 461

php fpm proc open,The Process class relies on proc_open, which is not available on your PHP installa...

今天在使用composer安装一个Laravel项目的扩展的时候,提示:The Process class relies on proc_open, which is not available on your PHP installation,接下来吾爱编程为大家介绍一下解决方法,有需要的小伙伴可以参考一下:1、错误提示:>Illuminate\Foundation\ComposerSc...

weixin_39988164的博客 520

避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战)

本文详细介绍了如何构建稳定的Python爬虫系统以爬取IEEE Xplore学术论文,包括反爬策略、MongoDB存储优化和断点续传机制。通过动态等待时间算法、请求头指纹管理和会话保持策略,有效应对IEEE的反爬机制。同时,优化MongoDB数据结构和索引,提升存储效率。最后,强调法律合规与伦理考量,确保爬虫合法合规运行。

weixin_29031057的博客 1095

PHP7扩展开发之函数方式使用lib库

前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PHP的一个文件,这个文件提供一些函数方法。只是这个lib库是用c或者c++写的。 使用lib库的场景。一些软件已经提供了lib库,我们就没必要再重复实现一次。如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装。 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用。 代码

稻草人技术博客 1192

VS(QT)调用Matlab函数的方法

调试–>窗口–>异常设置–>Win32 Exceptions全部不要勾选。选择Microsoft Visual C++ 2017。将生成的.h和.lib分别放置在对应的文件夹。输入mex -setup C++输入deploytool选择。选择Realse x64。

woshigaowei5146的博客 591

zabbix添加IBM服务器SNMPV3监控

本地采用欧冠的是zabbix5.0,服务器型号是SR860,使用snmpv3因为只支持这个,醉了。说明:本地采用欧冠的是zabbix5.0,服务器型号是SR860。

萌新包大人的博客 1984

利用php调用C语言 扩展函数

第一步. 生成需要调用的so文件 1.  首先做一个简单的so文件: /** * hello.c * To compile, use following commands:  *   gcc -O -c -fPIC -o hello.o hello.c   *   gcc -shared -o libhello.so hello.o */ int hello_add(int a, i

chenyi14500的专栏 1245

ADS 2023 实战:手把手教你仿真一个中心频率 2.4GHz 的带通滤波器(附工程文件)

本文详细介绍了使用ADS 2023软件设计和仿真中心频率2.4GHz带通滤波器的全流程,包括工程准备、指标定义、原理图设计、仿真优化及实际电路实现。通过切比雪夫滤波器拓扑和参数优化,实现高性能的带通滤波器设计,适用于无线通信系统。附有工程文件和常见问题解决方案,助力工程师快速掌握射频滤波器设计技巧。

weixin_30790841的博客 481

PHP多进程 - 介绍,以及pcntl,posix扩展安装

一、为什么要学习多进程 在cli模式下,PHP的多进程编程使用的还是很普遍的,尤其是现在已经处于多核CPU时代,使用多线程或多进程能改更大限度发挥出多核CPU的性能,CPU中的Task就是线程程序,是CPU分配时间片的最小单元,默认情况下进程都会有一个线程,称为主线程,当然多线程和多进程都有各自的使用场景和优缺点。 二、如何开始 PHP的多进程是需要在Linux系统下才能运行。首先需要安装扩展。 1、pcntl扩展 它是PHP进行进程控制的扩展。 PHP的进程控制支持实现了Unix方式的进程创建, 程序执行

猛犸象 2828

馈电网络设计:通过Smith圆图工具完成微带线到同轴探针的阻抗匹配

Smith圆图通过图形化阻抗变换路径,显著简化微带线到同轴探针的匹配设计。设计需结合理论计算(微带线阻抗公式、探针等效模型)、圆图操作(串联/并联元件移动规则)及仿真验证,最终实现宽带低反射匹配。

百态·数智思维 | 聚焦大数据、量化与未来AI 1106

华为OD机试真题 新系统2026-04-15 Java&Go 实现【小猫钓鱼纸牌游戏】

有两名玩家甲和乙,他们玩一种“小猫钓鱼”扑克牌游戏。扑克牌为A、2、3、....J、Q、K,不考虑花色都用1-13来表示,然后给甲,乙两人各发n张牌,按给定顺序排成队列,这些牌背面朝上,正面朝下放置,队列的第一个元素是背面的第一张牌。 游戏规则如下:

MISAYAONE的博客 351

python进程已结束 退出代码0_PyCharm:进程以退出代码0结束

9 个答案:答案 0 :(得分:22)这是个好消息!这意味着您的代码没有错误。你已经完成了它并且没有任何问题。 Pycharm在找不到任何错误(加上您给出的任何输出)时返回0并返回1以及遇到错误时的错误消息。编辑器和脚本的行为与交互式终端不同,当您运行某个功能时,它不会自动显示结果。你需要实际告诉它自己做。通常,您只需print结果。如果您使用print(data.shape),则应返回您对成功消...

weixin_29800319的博客 3万+

RT-Thread Studio 使用笔记(七)| 配合STM32CubeMX添加裸机驱动(以ADC为例)

1. 配置STM32CubeMX 2. 复制stm32xxxx_hal_msp.c文件 将 CubeMx 生成的代码 stm32f7xx_hal_msp.c 函数复制到 RT-Thread Studio 生成的工程中,并参与工程编译: 由于我们并没有使用 CubeMx 生成的工程,所以这里需要将 stm32f7xx_hal_msp.c 文件中 #include “main.h” 替换为 #i...

Mculover666的博客(嵌入式) 9624

python进程已结束 退出代码0_退出代码0结束?

我正在编写一个shopping cart类来实现我经常在上面找到的购物车网站,我可以购买一些货物。Im考虑我可以存储在购物车中的东西,以及我可以在购物车上执行的操作。到简化问题,我认为网站是一个电子商店有平板电视、吊杆盒、iPod、摄像机等商品。这是我最后的密码class ShoppingCart(object):def __init__(self, s_name = ""):self.s_ite...

weixin_35683697的博客 3394

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python进程已结束、退出代码0_进程结束,退出代码1073740940(0xc000374)_python

刮擦高音喇叭后,我要做“形态分析”。但是发生了一个错误。在“进程结束,退出代码为-1073740940(0xc000374)”如何修复代码?请告知。谢谢你的建议。在from konlpy.tag import Twitterfrom collections import Counterdef get_tags(text, ntags=50):spliter = Twitter()nouns = s...

weixin_39778003的博客 2079

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python爬虫显示直接进程已结束,退出代码为 0

为什么爬图片有时候换个网址就直接显示进程已结束,退出代码为 0,而有时候就可以,这是怎么回事。

m0_74887288的博客 1499

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python进程已结束、退出代码0_进程已完成,退出代码为0

我有这个:import mathclass Point:def move(self, x, y):self.x = xself.y = ydef reset(self):self.move(0, 0)def calculate_distance(self, other_point):return math.sqrt((self.x - other_point.x)**2 +(self.y - o...

weixin_39584405的博客 3992

python进程已结束 退出代码0_python小白之搭建网络聊天室

群聊聊天室功能 : 1.有人进入聊天室需要输入姓名,姓名不能重复 2.有人进入聊天室时,其他人会收到通知:xxx 进入了聊天室 3. 一个人发消息,其他人会收到:xxx : xxxxxxxxxxx4. 有人退出聊天室,则其他人也会收到通知: xxx退出了聊天室 5.扩展功能:服务器可以向所有用户发送公告:管理员消息: xxxxxxxxx技术点:1.采用数据报套接字,搭建聊天室通信网络2.使用多进程...

weixin_34023073的博客 559

python进程已结束、退出代码0_用退出代码1完成进程 是啥意思

F:python.exe F:/jikexueyuan/re.pyTraceback (most recent call last):File "F:libsite.py", line 539, in main()File "F:libsite.py", line 521, in mainknown_paths = addusersitepackages(known_paths)File "F:l...

weixin_39634997的博客 1364

python进程已结束、退出代码0,为什么有时Python子进程在运行进程后无法获取正确的退出代码?...

I am using Python subprocess to run external scripts on Windows 7. I am trying to get the exit code.In case 1, I run a python script test1.py.test1.pyimport syssys.exit(24) myscript1.pyimport subpro...

weixin_34450092的博客 953

python进程已结束、退出代码0_为什么有时Python子进程在运行进程后无法获取正确的退出代码?...

I am using Python subprocess to run external scripts on Windows 7. I am trying to get the exit code.In case 1, I run a python script test1.py.test1.pyimport syssys.exit(24) myscript1.pyimport subpro...

weixin_39758392的博客 1018

python进程已结束 退出代码0_python基础:多进程下的生产者和消费者模型

生产者消费者模型介绍1、为什么需要使用生产者消费者模型生产者是指生产数据的任务,消费者是指消费数据的任务。当生产者的生产能力远大于消费者的消费能力,生产者就需要等消费者消费完才能继续生产新的数据,同理,如果消费者的消费能力远大于生产者的生产能力,消费者就需要等生产者生产完数据才能继续消费,这种等待会造成效率的低下,为了解决这种问题就引入了生产者消费者模型。2、如何实现生产者消费者模型进程...

weixin_39523835的博客 468

python里输入0程序结束_“进程结束,退出代码为0”,但未显示所需的输出

我是python新手,创建了一个小类“myclass”,它位于一个名为线性回归的模块中_示例.py. 它会打印出回归摘要和密度图:import statsmodels.api as smimport sklearn.datasets as skldimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsclass...

weixin_39824834的博客 2687

python结束任务之后如何关闭_"进程已结束,退出代码0"运行一直都是这样,大神求解呀...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import requestsfrom requests import Request,Sessionheaders={'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64)""AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/...

weixin_39814126的博客 1053

python pyqt5 进程已结束,退出代码 -1073740791 (0xC0000409)

问题发生 如图:(https://img-bbs.youkuaiyun.com/upload/202004/08/1586358766_933882.png) 根据combobox 取值更新 listWidget 选择某个值后会卡顿后闪退。 问题解决 百度各种搜索,都不能解决。 除了综合的内存大小问题和冲突问题外,基本都是语法问题。 像我此案例。 由于我会使用 clear()清理 combobox 或 li...

eggsound的博客 1万+

python出现进程已结束,退出代码为-1066598274 (0xC06D007E)的含义

python出现进程已结束,退出代码为-1066598274 (0xC06D007E)的含义为你当前使用的某个包与其他相关的包版本之间发生冲突 解决方法: 卸载正在使用的当前包与相关包 重新安装一遍即可解决

zy702432103的博客 9683
上一篇: PHP学习之六:语言杂项
下一篇: 怎样使用PhpDocumentor生成文档
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值