首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
138 阅读
2
php接口优化 使用curl_multi_init批量请求
130 阅读
3
2024年备考系统架构设计师
102 阅读
4
《从菜鸟到大师之路 ElasticSearch 篇》
101 阅读
5
PHP 文件I/O
89 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
785
篇文章
累计收到
7
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
785
篇与
的结果
2023-08-09
phalcon框架开发内容列表分页示例
phalcon框架开发内容列表分页示例<?php /** * phalcon框架内容列表示例 */ use Phalcon\Mvc\Model\Criteria; use Phalcon\Paginator\Adapter\QueryBuilder as PaginatorQueryBuilder; class ItvTopicController extends ControllerBase { /** * 主题列表 */ public function indexAction() { $numberPage = 1; if ($this->request->isPost()) { $query = Criteria::fromInput($this->di, "Topic", $_POST); $this->persistent->parameters = $query->getParams(); //获取搜索参数 } else { $numberPage = $this->request->getQuery("page", "int"); //取得页码 } if ($numberPage ==null) { $this->persistent->parameters = null; //如果页码为空,重置搜索参数 } $parameters = $this->persistent->parameters; if (!is_array($parameters)) { $parameters = array(); } if($this->request->getPost("topic")){ //搜索条件 $parameters["conditions"] .= " and topictype = 2 and status = 0"; //status:0正常,1删除 }else{ $parameters["conditions"] = "topictype = 2 and status = 0"; //status:0正常,1删除 } //传递 QueryBuilder 数据 $builder = $this->modelsManager->createBuilder() ->columns('*') ->from('Topic') //数据库 ->where($parameters['conditions'], $parameters['bind']) ->orderBy('id'); $paginator = new PaginatorQueryBuilder( array( "builder" => $builder, "limit" => 20, "page" => $numberPage ) ); $this->view->page = $paginator->getPaginate(); //获取分页数据 } } ?>
2023年08月09日
11 阅读
0 评论
0 点赞
2023-08-09
15 个最佳 PHP 库
15 个最佳 PHP 库PHP是一种功能强大的web站点脚本语言,通过PHP,web网站开发者可以更容易地创建动态的引人入胜的web页面。开发人员可以使用PHP代码与一些网站模板和框架来提升功能和特性。然而,编写PHP代码是一个繁琐又耗时的过程。为了缩短开发时间,开发人员可以用PHP库替代编写代码来为站点添加功能。使用PHP库来取代编写代码,可以显着地降低网站的开发时间,从而开发人员可以将时间投入到网站设计等重要环节。今天我们要介绍的就是15个最佳的PHP库,它们将帮助网站开发人员轻松提高网站的功能,优化PHP的开发时间。PChartPChart是一个令人印象深刻的PHP库,可以以一种可视化图表的形式生成文本数据。数据可以展示为柱状图,饼状图,以及其他格式。使用SQL查询可以帮助PHP脚本创建令人惊叹的图表和图形。PHP CAPTCHAPHP CAPTCHA是另一个伟大的用于创建自动化音频和可视化CAPTCHA的PHP库。CAPTCHA系统是完全自动的使用图灵测试来完成区分人和机器人的挑战。 PHP库需要PHP 4以及编译的FreeType文本和GD 1或2图像生成的支持。3.DispatchDispatch是一个简单的PHP库,可以定义URL规则以更好地组织网站。使用这个PHP库你可以匹配HTTP路径和要求,显示器等的特定类型。结合Dispatch和本文中列出的其他库,开发人员就能有一个强大而简单的工作设置。Services_JSONServices_JSON允许人脑可读数据的传输。 PHP库的最新版本为服务器传输数据提供了极大的便捷。phpAESphpAES是支持128,192和256位AES加密密码的一类实现PHP代码。当涉及到汇编成PHP的时候,你不需要其他的扩展。phpAES是全功能的,并且符合FIPS 197。ImageWorkshopImageWorkshop是一个伟大的开源PHP库,允许你层次化地控制操作图像。使用PHP库,你可以裁剪、调整大小、添加水印、制作缩略图等以不同的方式处理图像。 PHP库还可以更容易地进一步加强在web网站上所使用的图像。6.MinkMink是另一个有用的PHP库,可以帮助你用互联网浏览器测试web页面的交互。该库删除了不同浏览器之间的API的差异,从而给开发人员提供更好的测试环境。PHP ThumbnailerPHP Thumbnailer是一个简单的图像处理PHP库,能够帮助生成缩略图。此库不需要再安装外部库。PHP Thumbnailer提供了对缩略图的多种控制,如根据高度、宽度、百分比调整缩略图大小,旋转图像,以及创建自定义的小图形,如正方形。8.HoaHoa是结构化,模块化,可扩展的PHP库,可创建研究和工业领域之间的链接。 此PHP库建议必不可少的范式、机制、算法,以确保web站点的可靠性。PHP Text to ImagePHP Text to Image是一个可以将文本转换成图像的PHP库。在某些简单的情况下,如显示email地址作为不能以编程方式发现的图像的时候,这是很有用的。使用这个PHP库可以通过网络爬虫以及将它当作垃圾邮件来减少电子邮件地址泛滥。10.FakerFaker是一个非常有用的PHP库,可以在需要时创建假数据。使用这个PHP库,你可以执行各种诸如匿名数据,引导数据库,创建XML文档,进行压力测试的任务。11.PHP Image Upload ClassPHP Image Upload Class是一个功能强大的PHP库,可以简化上传图像到窗体表格的过程。通过这个库,开发人员可以使用文件输入命令上传图片。开发人员也可以在类之外定义用户消息,通过gettext或类似的命令,在本地提供帮助。12.Ratchet使用Ratchet PHP库,web开发人员可以创建实时性以及在客户端和服务器之间双向性的应用程序。 这个PHP库能够帮助促进和创造事件驱动应用程序,而不是使用传统的HTTP请求。PHP Export XLS ClassPHP Export XLS Class是一个轻量级的,快速又简单的PHP库,可以导出不同类型的数据到Excel中。它可以转换各种数据格式到.xls格式。此库还可工作于多个工作表,元数据(标题,作者,描述,等),不同的字体类型和风格,填充,单元格边框和渐变。开发人员也可以使用PHP扩展来添加图像到工作表中。phpDocumentorphpDocumentor是一个很不错的自动文档工具,可以帮助我们创建一个使用PHP代码的专业文档。 该PHP库支持添加多种不同的功能到网站。一些由PHP库支持的增值功能,包括支持合并自定义文档——例如教程,链接文档,创建高亮源代码,功能交叉引用到PHP常规文档。 此PHP库可以帮助自动化文档。PHP DB ClassPHP DB Class是一个伟大的PHP库,可以帮助开发PHP和MySQL。该工具可轻松方便地访问一个数据库,并减少执行任务所需的代码数量。此外,此PHP库提供各种调试功能。例如,开发人员可以使用调试功能来显示请求和结果表,还可以通过添加参数到它的类的方法来执行此任务。
2023年08月09日
12 阅读
0 评论
0 点赞
2023-08-09
用php-fpm的慢执行日志slow log分析PHP执行效率
用php-fpm的慢执行日志slow log分析PHP执行效率启用 php-fpm 的 slow log 日志,查看执行时间过长的php文件,并将执行时间过长的进程直接终止掉!看看效果如何!具体操作方法也简单,就修改一个文件,执行命令:# vi /usr/local/php/etc/php-fpm.confPHP 5.3.3 之前版本设置如下:The timeout (in seconds) for serving a single request after which the worker process will be terminatedShould be used when 'max_execution_time' ini option does not stop script execution for some reason'0s' means 'off'10sThe timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file'0s' means 'off'1sThe log file for slow requestslogs/slow.logPHP 5.3.3 之后版本设置如下:; The timeout for serving a single request after which a PHP backtrace will be; dumped to the 'slowlog' file. A value of '0s' means 'off'.; Available units: s(econds)(default), m(inutes), h(ours), or d(ays); Default Value: 0request_slowlog_timeout = 1s (对执行时间超过1s的php脚本进行日志记录); The log file for slow requests; Default Value: /usr/local/php/var/log/php-fpm.log.slowslowlog = /usr/local/php/var/log/php-fpm.log.slow (开启慢执行日志,日志目录路径一定要正确存在,否则会报错); The timeout for serving a single request after which the worker process will; be killed. This option should be used when the 'max_execution_time' ini option; does not stop script execution for some reason. A value of '0' means 'off'.; Available units: s(econds)(default), m(inutes), h(ours), or d(ays); Default Value: 0request_terminate_timeout = 30s (当php脚本执行时间超过30秒后终止该php脚本)注:request_terminate_timeout 将执行时间太长的进程直接终止request_slowlog_timeout 将执行过慢的文件写入日志以后即可根据慢执行日志 /usr/local/php/var/log/slow.log 来优化程序文件了!
2023年08月09日
9 阅读
0 评论
0 点赞
2023-08-09
匿名函数的那些事儿
匿名函数的那些事儿本文依旧以php为主。匿名函数,说白了就是“没有名字的函数”,恩废话。给一段代码可能更为直白:$foo = function() {// this is a closure}对,这就是匿名函数,没什么特别的,和一般函数结构神似,唯独少了个函数名。而且这个函数可以作为一个值被赋予一个变量或者对象属性。这种特性使得拥有匿名函数的编程语言再设计一些应用时,更为灵活。匿名函数和普通函数最大的区别是在于,匿名函数可以作为一个具体的“值”赋予给变量或者对象属性,其次,由于匿名函数可以被定义在不同地方,使得他可以有效利用他所在的局域内的变量(或者说上下文中的变量)。下面例子中就是这样一种情况。class foo{public function exec(Closure $callback) { echo $callback(); }}$name = 'nick';(new foo)->exec(function() use ($name) {return 'hi, '. $name;}); // 输出: hi, nick我们可以看到,匿名函数使用了上下文中的变量$name。而实际上,这个匿名函数是在另一个地方被执行(是在foo类里面被执行的)。这样使得我们不必将变量name的值通过参数传递到类foo的exec方法中,而且可以减少在exec方法中不必要的处理逻辑,使得类更容易专注于自己的职责。匿名函数的作用还有很多,要知道,函数定义的时候是不会执行的,除非被调用。上文中例子其实就是这样,我们可以看到,例子中,对$name变量的处理是在方法exec被调用后才发生,且利用了匿名函数被定义时的上下文中的变量。这种特性,我们可以利用来实现一个控制反转(IoC)容器。/**一个简单的IoC容器 */class Container{protected static $bindings; public static function bind($abstract, Closure $concrete) { static::$bindings[$abstract] = $concrete; } public static function make($abstract) { return call_user_func(static::$bindings[$abstract]); }}/**示例用的 talk 类 */class talk{public function greet($target) { echo 'hi, ' . $target->getName(); }}/**示例用的 A 类 */class A{public function getName() { return 'Nick'; }}/**示例用的 B 类 */class B{public function getName() { return 'Amy'; }}// 以下代码是主要示例代码// 创建一个talk类的实例$talk = new talk;// 将A类绑定至容器,命名为fooContainer::bind('foo', function() {return new A;});// 将B类绑定至容器,命名为barContainer::bind('bar', function() {return new B;});// 通过容器取出实例$talk->greet(Container::make('foo')); // hi, Nick$talk->greet(Container::make('bar')); // hi, Amy上述例子中,只有在通过make方法获取实例的时候,实例才被创建,这样使得我们可以实现容器,我们依照这一特性,还可以更多的实现高级的特性如事件触发等。利用好匿名函数,可以让应用变得更加丰满。
2023年08月09日
9 阅读
0 评论
0 点赞
2023-08-09
闭包——藏在代码中的“房间”
闭包——藏在代码中的“房间”“闭包”这词儿是学javascript时听来的。没错,听来的。我一直对这个词所代表的学术概念嗤之以鼻,不为别的,就因为这些概念严重的欺负了我对概念性知识的超弱理解能力。正是如此,让我一直对明确其概念这一行为抱有深深的芥蒂。不过,哪能跟自己过不去呢?于是,在不断学习新事物的同时,不知不觉中就慢慢领会了这个小家伙的神奇之处。由于本人写此文时主要偏好于php,主要以php中的闭包作为阐述对象,其他语言的闭包概念与其产生的冲突,若是我了解的,我会补充说明。好吧,还是聊聊闭包——藏在代码中的“房间”。什么是闭包?引用一段百度百科的第一句介绍:闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。如果你也是第一次了解这玩意儿,像我一样对概念性文字头大的人,懵懵懂懂的去开始走进闭包——一个对你而言是从未了解过概念时,你会由衷地感叹——这TM是啥(四声)JB玩意儿。这段描述其实没错。只是有点绕。来说说闭包闭包的概念往往无法通过描述解释清楚,我就先来写一段代码:<?phpfunction foo(){$i = 0; $bar = function() use (&$i) { return ++$i; } return $bar;}$closure = foo();echo $closure(); // 1echo $closure(); // 2?>以上代码中,我们可以说$closure就是一个闭包。上述例子中,我们无法直接从外部获取或者操作函数foo中的局部变量$i。在上述例子中,在函数内部定义了一个没有名字的函数,这个是匿名函数。关于匿名函数可以在另一篇文章里找到介绍。该匿名函数由于在foo函数内,自然而然通过use并且以引用的方式获取其内部变量$i(若是javascript则连use这一关键字都不需要),并对该变量进行自加(++)操作,然后返回。匿名函数作为一种可被传递的“值”赋给了变量 $bar,并返回。我们在示例代码第11行,全局变量 $closure 接收了 foo 函数返回的匿名函数,我们通过 $closure() 这一方式调用了这一个匿名函数,由于该匿名函数看似是在外部被调用,但实际上而言,匿名函数在定义的时候引用了它当时所处的上下文的变量 $i,而该匿名函数最终又被赋予了全局变量 $closure,假如全局变量 $closure 不被释放,则 $i 里面的值将会一直保留而不会被 GC(垃圾回收机制)所释放,因此,每一次调用该匿名函数的结果都是在上一次运算结果的基础上累加。好了,现在我们理一理。其实,简单理解,闭包就是一个操作函数内部变量的东西,它往往以匿名函数的形式体现,因为“操作”是一个过程、一个逻辑的实现,简单的代码无法完成,而匿名函数内,就和一般函数一样,里面可以包含一个完整的逻辑。因此,匿名函数有时候也叫做闭包函数,他是在一个封闭代码内的一个可以与外界沟通的桥梁,就像一个封闭的军事基地中的一个通讯室一样,一个藏在代码中的“房间”。闭包的用处我们看得出,闭包有一个很有用的功能就是保证了内部变量不被释放。这在 javascript 里很有用。但在 php 里这个用处不像 javascript,为什么?php 里你可以通过 static 将变量声明为静态,在整个程序执行期间,这个静态变量会一直保存在内存中而不会被释放,而 javascript 为了保证一些变量不被释放,只能保持其引用状态,这时候就可以利用闭包。我们把上一个例子中的php代码换成差不多的 javascript 代码:function foo(){var i = 0; var bar = function() { return ++i; } return bar;}closure = foo();alert(closure()); // 1alert(closure()); // 2上述代码中,由于将来自foo内部的匿名函数赋予了全局变量closure,因此程序运行期间都将保持对该匿名函数的引用,且该匿名函数引用了foo内部的变量,相当于程序运行期间也必须保持引用内部变量i,因此我们可以看到,i的值得以保留上一次的运算结果。假设我们没有使用闭包去引用这个内部变量i,将代码变为下面这个例子:function foo(){var i = 0; return ++i;}alert(foo()); // 1alert(foo()); // 1两次输出的值都为1,说明变量i在每次自加后,由于没有被其他地方所引用因而被释放,最终导致了两次得到的都是初始化后的i自加的结果。所以说,在 javascript 中,这样做的意义非常大,可以更灵活的实现更多功能。当然,php程序也可以这样,只是我们有其他的替代方案而已。不过php要通过匿名函数引用内部变量需要使用use,而且引用传值要求变量名前面必须要加&,这是和javascript不一样的地方。对于php而言,匿名函数的作用远远大于闭包,虽然两者关系紧密,要知道,闭包通常只能以匿名函数的方式实现,这也是为什么很多人会将两者概念搞混淆的原因。还可以做什么有时候,我们太过于计较一个设计能做什么的时候,往往带来太多困惑,其实存在即合理,有时候只是没发现,也许在某一天,某个项目的开发遇到头疼的问题时,这些特性说不准会让你突然脑洞大开。当然,闭包的用处太多了,尤其是 javascript 的开发。闭包的用处在php下似乎显得并不那么意义非凡,不过闭包带来的“匿名函数”,也叫做“闭包函数”,却让我们有了实现一些更为灵活程序的基础。我会在介绍匿名函数的一篇文章里,来谈谈关于匿名函数的神奇之处。
2023年08月09日
16 阅读
0 评论
0 点赞
1
...
106
107
108
...
157