首页 php教程 php手册 几道php面试题 相册类等

几道php面试题 相册类等

Jun 06, 2016 pm 07:46 PM
php 应用 浏览器 相册 要求 试题

面试题:相册类应用 : 要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达 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

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在网页上正确显示本地安装的'荆南麦圆体”? 如何在网页上正确显示本地安装的'荆南麦圆体”? Apr 05, 2025 pm 10:33 PM

在网页中使用本地安装的字体文件最近,我从网上下载了一种免费字体,并成功将其安装到了我的系统中。现在...

说明匹配表达式(PHP 8)及其与开关的不同。 说明匹配表达式(PHP 8)及其与开关的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

如何在渐变背景的卡券布局上实现缺口效果? 如何在渐变背景的卡券布局上实现缺口效果? Apr 05, 2025 am 07:48 AM

实现卡券布局的缺口效果在设计卡券布局时,常常会遇到需要在卡券上添加缺口的需求,尤其是在背景为渐变色...

描述...(SPLAT)操作员在php函数参数和数组解开包装中的目的和用法。 描述...(SPLAT)操作员在php函数参数和数组解开包装中的目的和用法。 Apr 06, 2025 am 12:07 AM

PHP中的...(splat)操作符用于函数参数和数组解包,提升代码简洁性和效率。1)函数参数解包:将数组元素作为参数传递给函数。2)数组解包:将一个数组解包到另一个数组中或作为函数参数。

如何获取58同城工作页面上的实时申请和浏览人数数据? 如何获取58同城工作页面上的实时申请和浏览人数数据? Apr 05, 2025 am 08:06 AM

如何在爬虫时获取58同城工作页面的动态数据?在使用爬虫工具爬取58同城的某个工作页面时,可能会遇到这样�...

如何使用 CSS 和 Flexbox 实现图片和文本在不同屏幕尺寸下的响应式布局? 如何使用 CSS 和 Flexbox 实现图片和文本在不同屏幕尺寸下的响应式布局? Apr 05, 2025 pm 06:06 PM

使用CSS实现响应式布局当我们希望在网页设计中实现不同屏幕尺寸下的布局变化时,CSS...

负边距在某些情况下为何未生效?如何解决这个问题? 负边距在某些情况下为何未生效?如何解决这个问题? Apr 05, 2025 pm 10:18 PM

负边距为何在某些情况下未生效?在编程过程中,CSS中的负边距(negative...

See all articles