首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
185 阅读
2
php接口优化 使用curl_multi_init批量请求
145 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
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
累计撰写
786
篇文章
累计收到
34
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
786
篇与
的结果
2023-08-09
PHP 扩展 php-affinity
PHP 扩展 php-affinityphp-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性:频繁的并行运算线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展)运行时间敏感的,决定性的进程向nginx,swoole等开源软件,都提供了设置cpu亲和性的方法。nginx官方建议worker数量等同于cpu核心数量也是为了将一个进程绑定到一个cpu核心上,同时避免进程切换带来的开销。Php本身并没有提供设置cpu亲和性的函数,我们可以通过两种方式实现:调用系统命令,修改当前进程cpu亲和性编写php扩展,封装系统调用。php-affinity是使用c编写的php扩展,项目地址:https://github.com/huyanping/php-affinity/** * set CPU affinity * * @param $cpu_id * @return bool */ functionsetaffinity($cpu_id){ $num= getcpucores(); if($cpu_id>= $num){ returnfalse; } $set= system_call($cpu_id); if($set=== -1){ returnfalse; } returntrue; } /** * get CPU affinity * * @return bool */ functiongetaffinity(){ $cpu_id= system_call(); if($cpu_id=== -1){ returnfalse; } return$cpu_id; } /** * get number of CPU * * @return bool */ functiongetcpucores(){ $nums= system_call(); if($nums=== -1){ returnfalse; } return$nums; }提供了如下三个函数:setaffinity – 设置cpu亲和性getaffinity – 获取cpu亲和性getcpucores – 获取cpu核心数量API 如下:参考文献:https://zh.wikipedia.org/wiki/%E5%A4%84%E7%90%86%E5%99%A8%E4%BA%B2%E5%92%8C%E6%80%A7http://www.ibm.com/developerworks/cn/linux/l-affinity.htmlhttp://www.cnblogs.com/LubinLew/p/cpu_affinity.html
2023年08月09日
9 阅读
0 评论
0 点赞
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日
10 阅读
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 点赞
1
...
106
107
108
...
158