php面试编程题汇总

合集下载

php面试题目带答案(3篇)

php面试题目带答案(3篇)

第1篇一、基础题1. 问题:请解释PHP中`$_SERVER`的作用。

答案:`$_SERVER`是一个全局数组,它包含了头信息、路径和脚本位置等信息。

通过这个数组,我们可以获取到诸如服务器的名称、执行脚本的路径、HTTP请求头等信息。

2. 问题:简述PHP中的魔术引用(`&`)的作用。

答案:魔术引用在PHP中用于引用传递。

当使用`&$variable`时,实际上传递的是变量的引用,而不是值。

这在函数内部修改变量时非常有用,因为它允许函数内部直接修改外部传入的变量。

3. 问题:请解释PHP中的`include`和`require`的区别。

答案:`include`和`require`都是用于包含其他PHP文件的工具,但它们在错误处理上有区别。

`require`如果找不到文件,会抛出一个致命错误并终止脚本执行;而`include`则会输出一条警告信息,但不会终止脚本执行。

4. 问题:如何使用PHP获取当前的时间戳?答案:可以使用`time()`函数获取当前的时间戳,该函数返回自1970年1月1日00:00:00 UTC以来的秒数。

5. 问题:简述PHP中的数据类型。

答案:PHP有八种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、对象(object)、资源(resource)、数组(array)和NULL。

二、进阶题1. 问题:请解释PHP中的`session`和`cookie`的区别。

答案:- `session`存储在服务器端,通过会话ID来识别不同的用户,安全性较高。

- `cookie`存储在客户端,通常用于存储用户偏好设置或其他小量数据,安全性相对较低。

2. 问题:如何使用PHP进行文件上传?答案:- 首先,需要设置`php.ini`文件中的`file_uploads`和`upload_max_filesize`参数。

- 在HTML表单中,使用`enctype="multipart/form-data"`属性。

php面试题目100题(3篇)

php面试题目100题(3篇)

第1篇PHP基础1. 什么是PHP?- PHP是一种开源的、服务器端脚本语言,用于创建动态网页和应用程序。

2. PHP的主要特点有哪些?- 易于学习、跨平台、丰富的库支持、良好的社区支持等。

3. PHP和HTML有什么区别?- PHP是一种服务器端脚本语言,而HTML是用于创建网页的标准标记语言。

4. 如何安装PHP?- 在操作系统上下载PHP安装包,配置Web服务器(如Apache),设置PHP扩展,并配置文件权限。

5. PHP中的变量如何声明?- 使用$符号后跟变量名,如$variable。

6. PHP中的数据类型有哪些?- 整数、浮点数、字符串、布尔值、数组、对象、资源、NULL。

7. 如何处理PHP中的错误?- 使用error_reporting()函数、try-catch语句、set_error_handler()函数等。

8. 什么是魔术引用?- 当传递一个变量到函数时,使用&符号来传递变量的引用,而不是变量的值。

9. 如何实现PHP中的数据加密?- 使用PHP内置的加密函数,如md5(), sha1(), password_hash()等。

10. 什么是PHP中的面向对象编程(OOP)?- OOP是一种编程范式,它允许将数据(属性)和行为(方法)封装在一起。

PHP变量和常量11. 什么是PHP中的变量?- 变量用于存储信息到内存中,可以是任何类型的数据。

12. 如何定义PHP中的常量?- 使用define()函数或const关键字。

13. PHP中的变量作用域有哪些?- 局部作用域(函数内)、全局作用域(函数外)、静态作用域、动态作用域。

14. 如何使用超全局变量?- $GLOBALS数组包含了所有全局变量。

15. 如何区分变量和常量?- 变量在运行时可以改变值,而常量一旦定义就不能更改。

PHP控制结构16. 什么是条件语句?- if, elseif, else等用于根据条件执行代码块。

php最新_面试题(3篇)

php最新_面试题(3篇)

第1篇一、PHP基础题1. 问题:请简述PHP的7个基本数据类型。

解析:PHP的7个基本数据类型包括:整数(int)、浮点数(float)、字符串(string)、布尔值(bool)、数组(array)、对象(object)和资源(resource)。

2. 问题:解释一下PHP中的变量作用域。

解析:PHP中的变量作用域分为局部作用域(函数内部)、全局作用域(函数外部)、类作用域(类内部)和静态作用域(函数内部或类内部)。

3. 问题:如何定义一个PHP数组?解析:可以通过以下方式定义一个PHP数组:```php$array1 = array("apple", "banana", "cherry");$array2 = ["apple", "banana", "cherry"];```4. 问题:请解释PHP中的魔术方法。

解析:魔术方法是PHP中特殊的类方法,以两个下划线开始和结束,如`__construct`、`__destruct`、`__get`、`__set`等。

它们在对象创建、销毁、属性访问等场景下被自动调用。

5. 问题:如何检查一个变量是否为空?解析:可以使用`empty()`函数检查变量是否为空,例如`empty($variable)`。

二、PHP面向对象编程(OOP)1. 问题:请解释PHP中的继承。

解析:继承是OOP中的一个重要概念,允许一个类继承另一个类的属性和方法。

子类可以访问父类的公有和受保护的属性和方法。

2. 问题:如何实现接口和抽象类?解析:接口定义了类必须实现的方法,而抽象类可以包含抽象方法和具体方法。

使用`interface`和`abstract`关键字分别定义接口和抽象类。

3. 问题:请解释PHP中的封装。

解析:封装是将类的属性和方法封装在一起,只暴露必要的接口给外部使用。

php面试题100(3篇)

php面试题100(3篇)

第1篇PHP基础知识1. 什么是PHP?2. PHP的主要特点是什么?3. PHP与HTML的区别是什么?4. PHP是客户端脚本语言还是服务器端脚本语言?5. PHP可以运行在哪些操作系统上?PHP环境搭建6. 如何安装PHP环境?7. 如何配置PHP的扩展模块?8. 如何设置PHP的配置文件(php.ini)?9. 如何使用XAMPP、WAMP或MAMP等集成开发环境(IDE)?10. 如何调试PHP代码?PHP基本语法11. PHP脚本如何开始和结束?12. 如何声明变量?13. PHP的数据类型有哪些?14. 如何使用常量?15. 如何使用注释?控制结构16. 什么是条件语句?17. 如何使用if、else、switch语句?18. 什么是循环语句?19. 如何使用for、while、do-while循环?20. 什么是break和continue语句?函数21. 什么是函数?22. 如何定义和使用自定义函数?23. 什么是内置函数?24. 如何传递参数到函数?25. 什么是返回值?数组26. 什么是数组?27. 如何声明和初始化数组?28. 如何遍历数组?29. 数组的常用操作有哪些?30. 什么是关联数组?对象31. 什么是面向对象编程(OOP)?32. 如何定义类和对象?33. 什么是构造函数和析构函数?34. 如何使用封装、继承和多态?35. 如何定义和调用方法?数据库操作36. PHP中常用的数据库类型有哪些?37. 如何连接MySQL数据库?38. 如何执行SQL查询?39. 如何处理数据库结果集?40. 如何使用预处理语句?文件操作41. 如何读取和写入文件?42. 如何打开、关闭文件?43. 如何使用文件指针?44. 如何处理文件上传?45. 如何使用目录操作函数?表单处理46. 如何创建HTML表单?47. 如何获取表单数据?48. 如何验证表单数据?49. 如何使用POST和GET方法?50. 如何处理文件上传表单?安全性51. 什么是SQL注入?52. 如何防止SQL注入?53. 什么是XSS攻击?54. 如何防止XSS攻击?55. 什么是CSRF攻击?56. 如何防止CSRF攻击?错误处理57. PHP中如何处理错误?58. 什么是错误报告级别?59. 如何使用try-catch语句?60. 如何自定义错误处理函数?PHP版本和扩展61. PHP有几个主要版本?62. PHP7相比PHP5有哪些改进?63. 如何安装PHP扩展?64. 常用的PHP扩展有哪些?65. 如何使用pecl安装扩展?其他66. 什么是命名空间?67. 如何使用类和对象?68. 什么是序列化和反序列化?69. 如何使用session?70. 什么是cookies?71. 如何使用cURL?72. 什么是SOAP和RESTful API?73. 如何使用JSON和XML?74. 什么是CLI(命令行界面)脚本?75. 如何使用Apache模块?76. 如何使用PHP-GTK?77. 如何使用PHP-CLI?78. 如何使用PHP-FPM?79. 什么是PHP安全模式?80. 什么是PHP优化器(OPcache)?高级主题81. 如何实现会话管理?82. 如何实现缓存?83. 如何实现日志记录?84. 如何实现缓存和日志记录?85. 如何实现用户认证和授权?86. 如何实现RESTful API?87. 如何实现RESTful API的安全性?88. 如何实现缓存和日志记录?89. 如何实现分布式系统?90. 如何实现负载均衡?91. 如何实现消息队列?92. 如何实现微服务架构?93. 如何实现区块链技术?94. 如何实现人工智能和机器学习?95. 如何实现区块链技术?96. 如何实现大数据处理?97. 如何实现云计算?98. 如何实现边缘计算?99. 如何实现物联网(IoT)?100. 如何实现区块链技术?以上是100道PHP面试题的概览,每道题都需要根据实际情况进行深入研究和扩展。

php最近两年面试题(3篇)

php最近两年面试题(3篇)

第1篇一、PHP基础面试题1. 请解释PHP的全称及其代表的意义。

答:PHP的全称是PHP: Hypertext Preprocessor,最初代表的是Personal Home Page。

2. PHP中的变量以什么符号开头?答:PHP中的变量以"$"符号开头,后跟变量名。

3. PHP支持哪些数据类型?答:PHP支持多种数据类型,包括字符串、整数、浮点数、布尔值、数组、对象、NULL以及资源。

4. 如何连接MySQL数据库?答:可以使用mysqli或PDO扩展连接MySQL数据库。

5. 如何定义和调用函数?答:定义函数使用function关键字,调用时直接使用函数名。

6. 会话在PHP中有什么作用?答:会话用于在多个页面请求之间存储用户信息。

可以使用session_start()函数启动会话,并使用SESSION超全局变量存取会话数据。

7. include和require有什么区别?答:include在文件无法找到时会生成一个警告并继续执行,而require则会生成一个致命错误并停止脚本执行。

8. 如何处理PHP中的错误和异常?答:可以使用try-catch块来处理错误和异常。

9. 如何获取和处理表单数据?答:可以使用GET或POST超全局数组获取和处理表单数据。

10. 如何实现单例模式?答:单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个访问它的全局访问点。

实现单例模式的方法有很多,以下是一个简单的示例:```phpclass Singleton {private static $instance = null;private function __construct() {}public static function getInstance() {if (self::$instance === null) {self::$instance = new Singleton();}return self::$instance;}private function __clone() {}private function __wakeup() {}}```二、PHP高级面试题1. 如何实现PHP的不带cookie函数下发cookie?答:可以通过设置HTTP响应头来实现,如下所示:```phpheader("Set-Cookie: name=value");```2. 对于分布式系统,如何保存session值?答:可以通过以下几种方式保存session值:(1)使用Redis作为session存储,配置session.save_handler为redis。

php面试题库100题(3篇)

php面试题库100题(3篇)

第1篇一、基础知识1. PHP是什么?请简要描述其特点和用途。

2. 什么是PHP的超全局变量?请列举几个常见的超全局变量。

3. 如何区分GET和POST方法?它们各自有什么优缺点?4. 简述PHP中的面向对象编程(OOP)的基本概念,如封装、继承、多态。

5. 请解释PHP中的魔术引用(Magic Quotes)和为什么它已被弃用。

6. 什么是命名空间?它在PHP中的作用是什么?7. 简述PHP中的数据类型,如整数、浮点数、字符串、布尔值等。

8. 如何定义一个函数?请给出一个示例。

9. 什么是数组?如何在PHP中创建和操作数组?10. 请解释PHP中的关联数组与索引数组之间的区别。

二、语法与构造11. 如何声明一个常量?请给出一个示例。

12. 如何使用条件语句(如if、else、switch)进行逻辑判断?13. 如何使用循环语句(如for、while、do-while)执行重复操作?14. 如何使用函数参数传递值和引用?请举例说明。

15. 请解释PHP中的类型转换,如从字符串到整数,从整数到布尔值等。

16. 什么是类型提示?在PHP 7及以后版本中它有什么作用?17. 如何处理PHP中的错误和异常?请使用try-catch语句举例。

18. 如何使用字符串函数,如strlen、trim、strpos?19. 请解释PHP中的魔术常量,如__LINE__、__FILE__等。

20. 如何使用数组函数,如array_merge、array_slice、array_reverse?三、面向对象编程21. 如何定义一个类?请给出一个示例。

22. 如何创建类的实例?请举例说明。

23. 请解释构造函数和析构函数在类中的作用。

24. 如何实现类的继承?请举例说明。

25. 什么是接口和抽象类?它们在PHP中的作用是什么?26. 如何使用封装和访问修饰符(如public、protected、private)来控制类的访问权限?27. 请解释PHP中的魔术方法,如__get、__set、__construct等。

php程序员应聘面试题(3篇)

php程序员应聘面试题(3篇)

第1篇一、基础知识与编程能力1. 请简述PHP的基本特点和应用场景。

2. 解释PHP的变量类型和作用域。

3. 如何在PHP中定义一个类和对象?4. 请描述PHP中的魔术方法(Magic Methods)及其作用。

5. 解释PHP中的异常处理机制。

6. 请写出如何使用PHP的预处理器指令。

7. 描述PHP中如何实现文件的上传和下载。

8. 请说明如何使用PHP中的数据库连接和查询。

9. 解释PHP中的会话(Session)和cookie的区别与使用场景。

10. 请简述PHP中的会话管理机制。

二、数据库操作1. 请描述MySQL数据库的基本概念和常用命令。

2. 如何使用PHP连接到MySQL数据库?3. 请写出使用PHP进行数据库查询的代码示例。

4. 如何在PHP中实现数据的增删改查(CRUD)操作?5. 描述如何使用PHP进行事务处理。

6. 请说明如何优化数据库查询性能。

7. 如何在PHP中处理数据库连接池?8. 解释什么是数据库索引,以及其在性能优化中的作用。

9. 请简述如何使用PHP进行数据库备份和恢复。

10. 如何在PHP中处理数据库连接错误?三、前端技术1. 请描述HTML、CSS和JavaScript的基本概念。

2. 如何使用PHP生成HTML页面?3. 描述如何使用PHP处理CSS样式。

4. 请写出使用PHP进行JavaScript代码嵌入的示例。

5. 如何在PHP中实现AJAX请求?6. 描述如何使用PHP进行前端验证。

7. 请说明如何使用PHP处理前端发送的表单数据。

8. 如何在PHP中实现分页功能?9. 描述如何使用PHP进行前端缓存。

10. 如何在PHP中处理跨域请求?四、框架与工具1. 请描述Laravel框架的基本概念和特点。

2. 如何使用Laravel框架进行路由管理?3. 描述Laravel框架中的Eloquent ORM。

4. 请说明如何使用Laravel框架进行依赖注入。

程序员php面试题目(3篇)

程序员php面试题目(3篇)

第1篇一、基础题1. 请简述PHP是一种什么类型的编程语言?2. PHP有哪些优点和缺点?3. 什么是PHP的变量?请举例说明。

4. 请简述PHP中的数据类型有哪些?5. 请解释PHP中的数组和对象。

6. 请解释PHP中的函数和类。

7. 什么是PHP中的魔术方法?8. 请解释PHP中的继承和多态。

9. 什么是PHP中的面向对象编程?10. 什么是PHP中的接口?11. 什么是PHP中的异常处理?12. 什么是PHP中的命名空间?13. 请解释PHP中的静态变量和静态方法。

14. 什么是PHP中的全局变量和局部变量?15. 请解释PHP中的超全局变量。

二、编程题1. 编写一个PHP函数,用于计算两个整数的和。

2. 编写一个PHP函数,用于判断一个字符串是否是回文。

3. 编写一个PHP函数,用于实现一个简单的计算器。

4. 编写一个PHP函数,用于将一个数组转换为对象。

5. 编写一个PHP函数,用于实现一个简单的用户登录系统。

7. 编写一个PHP函数,用于实现一个简单的留言板系统。

8. 编写一个PHP函数,用于实现一个简单的图片上传功能。

9. 编写一个PHP函数,用于实现一个简单的分页功能。

10. 编写一个PHP函数,用于实现一个简单的文件上传功能。

三、数据库题1. 请简述MySQL是什么?2. 请解释MySQL中的数据类型。

3. 请解释MySQL中的表、字段和索引。

4. 请解释MySQL中的SQL语句。

5. 编写一个PHP函数,用于连接MySQL数据库。

6. 编写一个PHP函数,用于执行SQL查询。

7. 编写一个PHP函数,用于插入数据到MySQL数据库。

8. 编写一个PHP函数,用于更新MySQL数据库中的数据。

9. 编写一个PHP函数,用于删除MySQL数据库中的数据。

10. 编写一个PHP函数,用于实现一个简单的数据分页功能。

四、Web开发题1. 请简述HTML和CSS。

2. 请解释JavaScript。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<?php/*MYSQL数据库优化建议:1.选择合适的字段2.使用连接查询代替子查询3.使用union代替临时表4.建立索引5.建立事务6.用锁定表优化事务7.用外键优化锁定表8.优化查询语句*///翻转字符串function Strrev_one($string){$str=$string=''?'':$string;$num=strlen($str);$str_end='';for($i=$num-1;$i>=0;$i--){$str_end.=$str[$i];}return $str_end;}//实现中文字符截取无乱码function GBstr($string,$start,$lenght){if(strlen($string)>$lenght){$len=$start+$lenght;$str_end='';for($i=0;$i<$len;$i++){if(ord(substr($string,$i,1))>0xa0){$str_end.=substr($string,$i,2);$i++;}else{$str_end.=substr($string,$i,1);}}return $str_end;}else{return $string;}}//打印客户端和服务端ip地址/*IP:echo $_SERVER['REMOTE_ADDR']; 或者: getenv('REMOTE_ADDR');打印服务器IP:echo gethostbyname("")*///准确获得服务端ip地址function getip(){if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){ $ip = getenv('HTTP_CLIENT_IP');}else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){$ip = getenv('HTTP_X_FORWARDED_FOR');}else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ $ip = getenv('REMOTE_ADDR');}else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){$ip = $_SERVER['REMOTE_ADDR'];}preg_match("/[\d\.]{7,15}/", $ip, $temp);$ip = $temp[0] ? $temp[0] : 'unknown';unset($temp);return $ip;}//修改session生存时间setcookie(session_name(),session_id(),$lifetime);session_set_cookie_params($lifetime);//获取网址首页的全部内容如function GetConect($address){$judge=preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"]) *$/",$address)?true:false;if($judge){$readcontents=fopen($address, "rb");$contents = stream_get_contents($readcontents);fclose($readcontents);return $contents;}return file_get_contents($address);}//php中的heredoc特殊字符串/*heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子:$STR=<<<EOTMY NAME IS HELLO WORLD!EOT;*///验证电子邮箱的函数function checkEmail($email){$pregEmail="/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2}) ?/i";return preg_match($pregEmail,$email);}//获得当前脚本执行路径和参数/*$script_name = basename(__file__); print_r($script_name);*///排序<!--冒泡法-->function maopao($array){if(count($array)<=1) return $a;$a=$array;$num=count($a);$i='';$j='';for ($i=1;$i<$num;$i++){for($j=$num-1;$j>=$i;$j--){if($a[$j]>$a[$j-1]){$temp=$a[$j];$a[$j]=$a[$j-1];$a[$j-1]=$temp;}}}return $a;}//从一个标准的url里面取出扩展名function getExt($url){$arr = parse_url($url);//标准化url$file = basename($arr['path']); //取得url的path部分$ext = explode(".",$file); //裁剪return $ext[1];}//修改标准的html里面的meter头Function HTMLchange($html){$pattern = "/<meta\s+http-equiv=(\'|\")?Content-Type(\'|\")?\s+content=(\'|\")text\/html;\s+charset=(.*)(\ '|\")>/i";$replacement = "<meta http-equiv='Content-Type' content='text/html; charset=big5'>";$result = preg_replace($pattern,$replacement, $html);echo htmlspecialchars($result);}//函数计算二个文件的相对路径$a相对于$b的路径function getRelativePath($a, $b) {$returnPath = array(dirname($b));$arrA = explode('/', $a);$arrB = explode('/', $returnPath[0]);for ($n = 1, $len = count($arrB); $n < $len; $n++) {if ($arrA[$n] != $arrB[$n]) {break;}}if ($len - $n > 0) {$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));}$returnPath = array_merge($returnPath, array_slice($arrA, $n));return implode('/', $returnPath);}//遍历文件夹下的所有子文件夹和文件function listDir($dir = '.'){if ($handle = opendir($dir)) {while (false !== ($file = readdir($handle))) {if($file == '.' || $file == '..'){continue;}if(is_dir($sub_dir = realpath($dir.'/'.$file))){echo 'FILE in PATH:'.$dir.':'.$file.'<br>';listDir($sub_dir);}else{echo 'FILE:'.$file.'<br>';}}closedir($handle);}}//猴子选大王$n是猴子的总数,$m是踢出的位置function MonkeyKing($n,$m){//构造数组for($i=1 ;$i<$m+1 ;$i++){$arr[] = $i ;}$i = 0 ; //设置数组指针while(count($arr)>1){//遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后if(($i+1)%$n ==0) {unset($arr[$i]) ;} else {array_push($arr ,$arr[$i]) ; //本轮非出局猴子放数组尾部unset($arr[$i]) ; //删除}$i++ ;}return $arr ;}/*** 有m只猴子,从1开始数到n,第n只猴子退出,如此循环执行下去,直到剩下最后一只猴子,求该猴子的编号?** 递归算法* @param int $m 猴子数* @param int $n 出局数* @param int $current 指针*/ function killMonkey($monkeys , $n , $current = 0){$num = 1;if(count($monkeys) == 1){echo $monkeys[0]."成为猴王了";return;}else{for($num;$num<$n;$num++){if($current==$n){$current=0;break;}$current++;}//echo $monkeys[$current]."的猴子被踢掉了<br/>";array_splice($monkeys , $current , 1);//var_dump($monkeys);killMonkey($monkeys , $n , $current);}}function KingMonkey($m,$n){for($i=1 ;$i<$m+1 ;$i++){$monkeys [] = $i ;}killMonkey($monkeys , $n );}//多进程/线程同时读写一个文件的问题function same_time_write($address1){//写入$fp = fopen($address, 'ab'); //从后面flock($fp, LOCK_EX); //先锁住文件,等待fwrite($fp, 'Just A Test String.......'); //开始写入flock($fp, LOCK_UN); //释放锁fclose($fp); //关闭读操作//读取$fp = fopen($address, 'r');flock($fp, LOCK_SH);//从文件读取flock($fp, LOCK_UN);fclose($fp);}//打开function T_put($filename,$string){$fp = fopen($filename,'a'); //追加方式打开if (flock($fp, LOCK_EX)){ //加写锁fputs($fp,$string); //写文件flock($fp, LOCK_UN); //解锁}fclose($fp);}//取文件function T_get($filename,$length){$fp = fopen($filename,'r'); //追加方式打开if (flock($fp, LOCK_SH)){ //加读锁$result = fgets($fp,$length); //读取文件flock($fp, LOCK_UN); //解锁}fclose($fp);return $result;}//写入function add_num( $file_path , $messageid , $num){$file_path_user = $file_path . '/' . $messageid;//把路径加上被投人ID,去往被投人的文件夹while(file_exists($file_path_user . '/NO_WRITABLE')){//为防止并发写入文件错误,判断一个文件是否存在,若存在证明正在插入,进入死循环,否则直接插入touch($file_path_user . '/NO_WRITABLE');//新建验证文件file_put_contents( $file_path_user.'/num.txt',intval(file_get_contents($file_path_user.'/num.txt')) + $num); //增加票数unlink($file_path_user. '/NO_WRITABLE');//删除验证文件}}//用PHP实现一个双向队列class DoubleEndedQueue{protected $elements;public function __construct(){$this->elements = array();}public function push($element){array_unshift($this->elements , $element);}public function pop(){return array_shift($this->element);}public function inject($element){$this->elements[] = $element;}public function eject(){array_pop($this->elements);}}//php递归function test($n) {echo $n." ";if($n>0)test($n-1);//递归elseecho "<-->";echo $n." ";}?>。

相关文档
最新文档