search
Homephp教程php手册几道php面试题 相册类等
几道php面试题 相册类等Jun 06, 2016 pm 07:46 PM
phpapplicationBrowserphoto albumRequiretest questions

面试题:相册类应用 : 要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达 50M 的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成 flv 供 flash 播放。叙述要涉及的各类开源软件和

面试题:相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flvflash播放。叙述要涉及的各类开源软件和简单用途。

答案:

swfupload

PclZip:压缩解压

gd/imagemagic:图片剪裁

ffmpeg:命令行的图形化视频转换工具

测试phpmysql性能的工具

Aphp工具

1hprof —— facebook 开发的一个测试php性能的扩展。特性如下:

1、  Flat Profile. 提供函数级的汇总信息,比如调用次数、执行时间、内存使用、CPU占用等。

2、  Hierarchical Profile 对每个程序,进行了父级调用和子级调用的分解。

3、  Diff Reports(差异报告)。有很多种情况,我们希望能够对比,比如新版本比旧版本提升了多少速度,两个版本的差距究竟在哪里

4、  Callgraph View(调用视图)。性能监测的数据可以绘制成调用视图,方便我们查看

5、  Memory Profile(内存监控)。这个特性帮助我们了解PHP如何分配和释放内存

6、  如何处理外部文件。XHProf include,require,include_once,require_once进来的文件视作是一个 function

2XDEBUG WinCacheGrind:前者生成文件,后者负责解析。

Bmysql工具

sysbench(或者super-smack)测试mysql性能。使测试获得好得数据,这其实非常简单:1 最大化CPU利用率  2 减少由于IO造成的延迟

 

如何提取一个网页的所有链接?

正则1 [^ "]*) "| '(? [^ ']*) '|(? [^> \s]*))[^> ]*?> (? [\s\S]*?)

 

上面可以提取新浪的全部链接还有标题,比较牛!,下面有个其他网友做的简单的,可能有错:

正则2/"\' ]+)["|\']?\s*[^>]*>([^>]+)/i

例如:

      

    $file = file_get_contents(“http://www.rocsky.net”);

    preg_match_all('/"\' ]+)["|\']?\s*[^>]*>([^>]+)/i', $file, $links);  

    print_r($links);  

exit;       ?>  

 

 

如何防止同一个用户同时登陆?如果我用aa登陆,别人就不能用了

要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开系统的呢?这就要定期清除cache中的内容了,也就是设置一个cache的时间。这个时间可以跟用户的session值联系起来,刚好当用户session值失效的时候该用户在cache里面的信息也会被清空.这样就达到了防止同时登陆的效果,具体代码如下:

 放在登陆成功的地方:

string key = TextBox1.Text; //用户名文本框设为cache关键字

string uer = Convert.ToString(Cache[key]); //读取cache中用户相应的值

//判断cache中是否有用户的信息,如果没有相关的值,说明用户未登陆

if (uer == null || uer == String.Empty)

{

 //定义cache过期时间

TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);

 

 //第一次登陆的时候插入一个用户相关的cache值,

 HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);

 Session["ADMINID"] = TextBox1.Text;

 Response.Redirect("main.aspx");

}

else

{ //重复登陆

 Response.Write("<script>alert('</script>您的账号已经登陆!');window.location='login.aspx';");

}

单点登陆SSO

很详细,慢慢看http://www.iteye.com/topic/1039052

垃圾什么时候回收?

php 5.3之前使用的垃圾回收机制是单纯的“引用计数”,也就是每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器+1;当变量引用撤掉后,计数器-1;当计数器=0时,表明内存对象没有被使用,该内存对象则进行销毁,垃圾回收完成。

 

“引用计数”存在问题,就是当两个或多个对象互相引用形成环状后,内存对象的计数器则不会消减为0;这时候,这一组内存对象已经没用了,但是不能回收,从而导致内存泄露;

 

上面是有问题,js也没有这么做!js用的是?(忘了,哭)

php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一种复杂的算法,来检测内存对象中引用环的存在,以避免内存泄露

 

1)垃圾回收的时机

Php中,引用计数为0,则内存立刻释放;也就是说,不存在环状引用的变量,离开变量的作用域,内存被立刻释放。

环状引用检测则是在满足一定条件下触发,所以在上面的例子中,会看到使用的内存有大幅度的波动;也可以通过 gc_collect_cycles 函数来主动进行环状引用检测。

 

2) &符号的影响

显式引用一个变量,会增加该内存的引用计数:

$a = "something";

$b = &$a;

此时unset($a), 但是仍有$b指向该内存区域的引用,内存不会释放。

 

3unset函数的影响

unset只是断开一个变量到一块内存区域的连接,同时将该内存区域的引用计数-1;在上面的例子中,循环体内部,$a=new A(); unset($a);并不会将$a的引用计数减到零;

 

4= null 操作的影响;

$a = null 影响与unset($a)类似;

 

5)脚本执行结束的影响

脚本执行结束,该脚本中使用的所有内存都会被释放,不论是否有引用环。

 

问:列出你知道的php中得函数那些是直接作用于变量本身?

str_replace() 函数将返回修改过的字符串,

usort() 却直接作用于传递的参数变量本身

其实因为数组传递的是引用,我自己的感觉

 

这些是函数吗?echo()print()unset()isset()empty()include()require()

上面都是语言结构!

If else都是语言结构,这些是在词法,语法解析中解释,详细看编译原理。

类和非面向对象中,如何定义常量?

class MyClass

{   

const constant = 'constant value';

}

define(“constant”, “constant value”)

 

面向对象的魔术方法

__construct, __destruct, __call, __get, __set, __isset, __unset (see Overloading), __sleep, __wakeup, __toString, __set_state and __clone

 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft