❶ 求php框架推荐,SpeedPHPYiiLaravelThinkPHP
对于新学习的话,tp中文文档全面,毕竟是国人开发的,yii一直都是排行榜很前面的框架,yar是鸟哥的,性能高,你说的第一种我就不知道了,但是我会认为,毕竟你使用的人少,不必纠结与这么多,要是我就选择tp或则yii!
❷ php 下个月起始结束日期
$now = time();
$now_m = date("m", $now);
$next_line = $now + 28 * 60 * 60 * 24 - 1;
if(date("m", $next_line ) == $now_m ){
$first = date("Ymd", strtotime(date("Y-m-1", $next_line )));
$last = date("Ymd", strtotime(date("Y-m-28", $next_line )));
}else if(date("m", $next_line + 60 * 60 * 24 ) == $now_m){
$first = date("Ymd", strtotime(date("Y-m-1", $next_line + 60 * 60 * 24 )));
$last = date("Ymd", strtotime(date("Y-m-29", $next_line + 60 * 60 * 24 )));
}else if(date("m", $next_line + 60 * 60 * 24 * 2 ) == $now_m){
$first = date("Ymd", strtotime(date("Y-m-1", $next_line + 60 * 60 * 24 * 2 )));
$last = date("Ymd", strtotime(date("Y-m-30", $next_line + 60 * 60 * 24 * 2 )));
}else if(date("m", $next_line + 60 * 60 * 24 * 3 ) == $now_m){
$first = date("Ymd", strtotime(date("Y-m-1", $next_line + 60 * 60 * 24 * 3 )));
$last = date("Ymd", strtotime(date("Y-m-31", $next_line + 60 * 60 * 24 * 3 )));
}
这里为了演示所以直接把那些相乘计算分开写了,写到程序里时建议直接写结果,减少程序执行时间,这个程序可以封成一个方法,传入一个时间戳就可以获得指定时间的下个月的头天和最后一天了。
❸ mac brew 怎么安装msql 5.5
Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具。 Mac 自带ruby 所以安装起来很方便,同时它也会自动把git也给你装上。官方网站: brew/Homebrew/homebrew/go/install)" 使用以下方法可以查看brew是否安装成功,以及目前的版本: liondeMacBook-Pro:~ lion$ brew -v Homebrew 0/project/machomebrew/Bottles/curl-7/freetds/stable/freetds-0/project/machomebrew/Bottles/gmp-6.0.0a.mavericks.bottle.tar.gz ######################################################################## 100.0% ==> Pouring gmp-6.0.0a.mavericks.bottle.tar.gz /usr/local/Cellar/gmp/6.0.0a: 15 files, 3.2M ==> Installing php55 ==> Downloading /get/php-5.5.15.tar.bz2/from/this/mirror Already downloaded: /Library/Caches/Homebrew/php55-5.5.15 ==> ./configure --prefix=/usr/local/Cellar/php55/5.5.15 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/5.5 -- ==> make ==> make install ==> /usr/local/Cellar/php55/5.5.15/bin/pear config-set php_ini /usr/local/etc/php/5.5/php.ini ==> Caveats The php.ini file can be found in: /usr/local/etc/php/5.5/php.ini ✩✩✩✩ PEAR ✩✩✩✩ If PEAR complains about permissions, 'fix' the default PEAR permissions and config: chmod -R ug+w /usr/local/Cellar/php55/5.5.15/lib/php pear config-set php_ini /usr/local/etc/php/5.5/php.ini ✩✩✩✩ Extensions ✩✩✩✩ If you are having issues with custom extension compiling, ensure that you are using the brew version, by placing /usr/local/bin before /usr/sbin in your PATH: PATH="/usr/local/bin:$PATH" PHP55 Extensions will always be compiled against this PHP. Please install them using --without-homebrew-php to enable compiling against system PHP. ✩✩✩✩ PHP CLI ✩✩✩✩ If you wish to swap the PHP you use on the command line, you should add the following to ~/.bashrc, ~/.zshrc, ~/.profile or your shell's equivalent configuration file: export PATH="$(brew --prefix homebrew/php/php55)/bin:$PATH" ✩✩✩✩ FPM ✩✩✩✩ To launch php-fpm on startup: * If this is your first install: mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/php55/5.5.15/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist * If this is an upgrade and you already have the homebrew.mxcl.php55.plist loaded: launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist cp /usr/local/Cellar/php55/5.5.15/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist The control script is located at /usr/local/Cellar/php55/5.5.15/sbin/php55-fpm Mountain Lion comes with php-fpm pre-installed, to ensure you are using the brew version you need to make sure /usr/local/sbin is before /usr/sbin in your PATH: PATH="/usr/local/sbin:$PATH" You may also need to edit the plist to use the correct "UserName". Please note that the plist was called 'homebrew-php.josegonzalez.php55.plist' in old versions of this formula. To have launchd start php55 at login: ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents Then to load php55 now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist ==> Summary /usr/local/Cellar/php55/5.5.15: 477 files, 43M, built in 3.9 minutes 过程中如果出现configure: error: Cannot find OpenSSL's <evp.h>这样的错误,请执行以下命令,将xcode进行更新: xcode-select --install 在PHP5安装完成的提示中写到,如何进行PHP5和mac自带的php以及php-fpm替换,执行以下命令后,我们可以看到当前的php版本已经是最新的了: liondeMacBook-Pro:~ lion$ echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile liondeMacBook-Pro:~ lion$ echo 'export PATH=/usr/sbin:$PATH' >> ~/.bash_profile liondeMacBook-Pro:~ lion$ echo 'export PATH=/usr/local/sbin:$PATH' >> ~/.bash_profile liondeMacBook-Pro:~ lion$ source ~/.bash_profile liondeMacBook-Pro:~ lion$ php -v PHP 5.5.15 (cli) (built: Aug 14 2014 15:37:16) (DEBUG) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies liondeMacBook-Pro:~ lion$ 使用brew search php55-命令,可以查看还有哪些扩展可以安装,然后执行brew install php55-XXX就可以了。 liondeMacBook-Pro:~ lion$ brew search php55- php55-amqp php55-igbinary php55-msgpack php55-runkit php55-varnish php55-apcu php55-imagick php55-mysqlnd_ms php55-scrypt php55-vld php55-augmentedtypes php55-inclued php55-oauth php55-snappy php55-wbxml php55-binpack php55-intl php55-opcache php55-solr php55-xcache php55-blitz php55-ioncubeloader php55-parsekit php55-sphinx php55-xdebug php55-boxwood php55-jsmin php55-pcntl php55-spl-types php55-xhgui php55-chdb php55-judy php55-pdflib php55-ssh2 php55-xhp php55-couchbase php55-leveldb php55-pdo-dblib php55-stats php55-xhprof php55-crypto php55-libevent php55-pdo-pgsql php55-stemmer php55-xmldiff php55-dbase php55-libvirt php55-phalcon php55-sundown php55-yac php55-dbus php55-lz4 php55-proctitle php55-svm php55-yaf php55-dmtx php55-lzf php55-propro php55-swoole php55-yaml php55-ev php55-mailparse php55-protobuf php55-thrift php55-yar php55-gearman php55-mcrypt php55-pspell php55-tidy php55-yaz php55-geoip php55-memcache php55-pthreads php55-timezonedb php55-yp php55-gmagick php55-memcached php55-raphf php55-tokyotyrant php55-yrmcds php55-graphdat php55-midgard2 php55-redis php55-twig php55-zmq php55-htscanner php55-mongo php55-redland php55-uploadprogress php55-zookeeper php55-http php55-mosquitto php55-riak php55-uuid 我安装的是以下php5.5几个扩展: liondeMacBook-Pro:~ lion$ brew install php55-imagick php55-igbinary php55-ev php55-gmagick php55-geoip php55-memcache php55-memcached php55-thrift php55-xdebug php55-sphinx composer 接下来我们测试php-fpm的配置是否正确,以及是否正确启动: #测试php-fpm配置是否正确 liondeMacBook-Pro:bin lion$ php-fpm -t [14-Aug-2014 16:14:30] NOTICE: configuration file /usr/local/etc/php/5.5/php-fpm.conf test is successful liondeMacBook-Pro:bin lion$ php-fpm -c /usr/local/etc/php/5.5/php.ini -y /usr/local/etc/php/5.5/php-fpm.conf -t [14-Aug-2014 16:14:48] NOTICE: configuration file /usr/local/etc/php/5.5/php-fpm.conf test is successful #启动php-fpm liondeMacBook-Pro:bin lion$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist #查看9000端口是否在运行 liondeMacBook-Pro:bin lion$ lsof -i:9000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME php-fpm 51241 lion 8u IPv4 0xce9d0f6417637937 0t0 TCP localhost:cslistener (LISTEN) php-fpm 51243 lion 0u IPv4 0xce9d0f6417637937 0t0 TCP localhost:cslistener (LISTEN) php-fpm 51244 lion 0u IPv4 0xce9d0f6417637937 0t0 TCP localhost:cslistener (LISTEN) php-fpm 51245 lion 0u IPv4 0xce9d0f6417637937 0t0 TCP localhost:cslistener (LISTEN) #关闭掉php-fpm进程,再查看9000端口,没有监听了 liondeMacBook-Pro:bin lion$ ps auxgrep php-fpmgrep -v 'grep'awk '{print $2}'xargs kill -9 liondeMacBook-Pro:bin lion$ lsof -i:9000 liondeMacBook-Pro:bin lion$ 设置PHP-FPM开机运行(其实在安装完成的提示中,也有说明): ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
❹ php的yar为什么报错呢
fnServerData"激槐改明薯: function ( sSource, aoData, fnCallback ) {
aoData.push( { "name": "table", "value": "wordforms"明判 } );
$.ajax( {
"dataType": 'json',
"url": sSource,
"data": aoData,
"success": fnCallback
} );
}
❺ php鸟哥的学历有多高
网名:雪候鸟,大家尊称鸟哥,惠新宸 , 是国内最有影响力的 PHP 技术专家,PHP 开发组核心成员,PECL 开发者,Zend 公司外聘顾问。他曾供职于雅虎,网络,现在新浪微博任平台及数据部总架构师兼首席 PHP 顾问。惠新宸是 PHP NG 核心开发者,PHP5.4,5.5 的主要开发者。作为 PECL 开发者贡献了 Yaf ,Yar 以及 Yac、Taint 等多个优秀开源作品,同时也是 APC,Opcache,Msgpack 等项目的维护者。
❻ window下php怎么安装yar扩展库
getClass().getClassLoader().loadClass("com.mysql.jdbc.Driver"),就闷拦肢不行。 为什么呢?打开com.mysql.jdbc.Driver的源代码看看, // // Register ourselves with the DriverManager // static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } 原来,Driver在static块中会衡察注蚂世册自己到java.sql.DriverManager。
❼ 为什么 PHPer 应当学习 Golang
随着 PHP 有着越来越深入的了解,以及遇到越来越多的不同业务时,使用 PHP 总会让我有一种莫名的无力感。当然,并不是我一个人在使用 PHP 的时候遇到了问题。事实上,每个略微有一些经验,接触过一些需求的人都会有同样的困惑。各种配合 LAMP(或者LNMP?)架构的后端技术也因此被发明或被发现,进而整合到 PHP 的开发的技术体系中。从简单的 Memcached作为数据中转,cron 后端定时处理;到 Gearman、RabbitMQ 这些队列神器;最近 Laruence 甚至封装了利用 libcurl 的异步特性实现并发 RPC 调用的 yar 扩展。几乎整个社区都在寻找 PHP 的摩西之路。好吧,说了一大堆,回归主题。之前我写了一篇英文练笔《Why you PHP guys should learn Golang》,获得不少国际友人的关注。排除拼写和语法被他们诟病外,主要是有许多朋友觉得我没把事情说清楚。所以这里我用母语重新聊聊这个事情,只是这些国际友人什么时候能学会阅读中文呢?;)Go 或者 Golang,是由 Google 支持的快速、一致、稳定的,有活跃的社区支持的开源编程语言。越来越多的应用选迅灶陵择使用 Golang 进行构建。虽然 Rob Pike 说“… 我们希望 C++ 程序员来了解 Go 并作为一个可选的语言 …”,不过我真得认为:PHPer 应当学习 Golang! 接下来我们就来谈谈原因。容易学习PHP 相当容易学习。Golang 也是!在这点上,一群大老外对我的观点进行了猛烈的抨击。他们认为我羞辱了 PHPer,说得好像只有简单的东西 PHPer 才能学会一样。但是,这难道不辩亏是事实吗?或者换个说法:像我一样的喜欢 PHP 的人,或多或少都会更喜欢简单的东西。PHP 的语法接近 C 族编程语言(C/C++/Java等等)。如果有这些语言的经验,在第一次遇到 PHP 的时候立刻就能开始上手编写代码。在我看来,编写 PHP 代码或许更加考验程序员的记忆力,而不是智力(当你面对各种不同风格的函数定义、各种扩展的特殊约定时,你一定会相当认同我的观点)。Golang 同样是一个 C 族编程语言。呃,或者有一些不同吧。例如关键字 “for”,功能上和 PHP 的接近,但是没有括号。条件语句 “if” 同样无需括号。可以阅读 Effective Go 了解更多内容。Golang 只有 3025 个关键字和 47 个操作符号、分隔符号或其他特殊标记。记住这些标记确实不需要什么特别的努力。精巧的类型系统相当容易使用。实用的,具有方法的结构体类型代替了笨重的对象系统。接口的设计是 Golang 中我最喜欢的部分。当完成了《Go 指南》的学习之后,利用 PHP 积累的经验,立刻就可以开始使用 Golang 处理一些简单的任务。容易使用PHP 脚本是由 SAPI 组件进行解析执行的,如 Web 服务器模块、PHP-FPM 或者 CLI。部署 PHP 所需要的全部东西就是一个 SAPI 环境。配置这个环境对于新手来说可能是学习 PHP 过程中最为困难的部分。所有的 Golang 代码会编译和链接为本地码。所以除了编译环境,执行时无需再为其进行任何特别的部署。对比 PHP 环境的配置,这要简单很多。你真得认为配置 PHP 环境很复杂吗?我不觉得,真的!而配置 Golang 编译环境比那还要简单点。我确信已经有大量的 Golang 相关的书籍、文章介绍过如何进行编译环境的配置了。为了更加清晰,我这里梳理一下思路。
有三个亩戚步骤需要处理:下载Golang 的源代码;根据《[翻译]Go 环境设置》的提示设置环境变量;运行源代码 src 目录中的 all.bash。或者一步到位:使用二进制包进行安装。然后就会得到一个叫做“go”的工具集合。使用“go”工具和使用 PHP 的 CLI 工具一样简单。《[翻译]go 工具》对此进行了详细的解释。PHP 的迷思如果一个编程语言容易学习和使用,我们是不是就应当学习它呢?有许多容易学习和使用的编程语言。难道要把它们都学一遍?答案是显然的:NO!但是 呢?只是因为它很酷!是的,我在开玩笑,但是这是真的。无论如何先从 PHP 自身谈起吧。PHP “原本是为了开发动态的 Web 页面而设计的服务器端通用语言(Wikipedia)”。PHP 一个重要的特性就是可以嵌入到 HMTL 中。代码编写在“<?php … ?>”标签内;HTML 写在标签外。它有一个强大的扩展系统。扩展使用 C 调用 Zend API 编写。数据的处理实际上要利用这些扩展完成。在我看来,PHP 是世界上最好的模板语言。但是当积累了一些 PHP 的经验,并且开始面对一些更加复杂的 Web 应用时,你一定会对 PHP 产生一种无力的感觉。它没有内建的并行机制,没有线程、进程(你真得认为那个简陋的进程控制可以不加改造的用在高并发的生产环境?),或者其他某“程”。一个慢数据源可以阻塞整个页面的处理。消息队列、缓存、代理……系统开始不仅仅是 PHP 这么单纯,还包括了许多服务和系统组件。这时,PHP 只处理很少的业务逻辑,成为真正的模板语言了。PHPer 们总是在寻找解决这一问题的办法,如“PHP multithread”或者PHP RPC 并发框架。我很难说哪种会更好一些。不过我肯定你会需要选择一些编程语言用于后端工作的开发。就我自己的经验,我尝试过 C(一直在和 malloc/free 进行搏斗)/Java(陷入到了 jar 地狱中)/python(从来没能做到 Pythonic 不说,还总是在错误的类型中打转)……如果想要获得性能,就得同内存管理进行搏斗;如果用 GC,就得部署和调优 VM;当获得便利性的时候,同时也是走在刀尖上,一个小错误就引起巨大的灾难……每个都有优势,同样每个都有问题。好吧!现在回到 Golang!Golang 有 GC,无需关心内存管理(或者可以用较少的精力去关注它)。代码被编译为本地码,因此“cp”和“mv”就是部署 Golang 编写的应用所需要的全部工具。噢,我刚才已经说过了,Golang 是一个具有静态类型系统的编译语言。所以你没有机会弄乱变量的类型。当然,PHPer 应该学习 Golang 的一个重要原因是“转到Go 是因为他们并未放弃太多的表达能力,但是获得了性能,并且与并发共舞(Rob Pike)”。《Why Not Go?(英文)》对此进行了深入的分析。我可以分享一些我的经验:有一个 Gearman 的worker 用于处理后端数据。PHP 通过其 API 连接到 Gearman 的 Job Server 向 worker 发起请求。最初 worker 是使用 python 编写的(还有更加原始的版本,PHP 的,但是你能想象它工作起来……唉,不说了……)。这个版本有许多的问题(是我们自己的问题,不关 Python 的事),但是至少它能工作。后来用 Golang 重写了这个 worker。为此我开发了 Golang 的 Gearman API,并使用 Zend API 编写了一个在 Golang 中执行 PHP 脚本的包。然后将它们放在一起:一个可以执行 PHP 的 Gearman worker。它已经工作了一段时间了,看起来还不错!哦,受到 Yar 的启发,这里还有一个 Golang 编写的 RPC 合并器,用来合并 PHP 脚本中的 RPC 调用。现在还是个玩具,不过或许日后能用得着。这其实是将 Golang 的 channel 当作消息队列来用。我在《Golang:有趣的 channel 应用》中对此有一些说明。世界真美好啊。谢谢 Golang!无论如何,大多数 PHPer 在进行后端开发的时候都会需要学习一些其他语言。如果你正在寻找,或者已经尝试了一些其他语言。为什么不来试试 Golang?它真得可以让你的生活更加轻松和快乐。让你可以有更多的时间陪伴你的家人和朋友,吃你爱吃的东西,去你想去的地方。貌似我还是没说清楚啊?好吧,没关系,在下个月的中国软件开发者大会上再跟大家就这个话题做一个探讨吧。
❽ php yar和swoole的区别
yaf跟swoole这两个框前腊架还是比较典型的,yaf更适合用作后台开发,swoole更适合用作聊天室开发(虽然用php做socket性能不或悔者太好)总体来说,就是侧重点不同。另外两种都属于轻框架型,yaf有规定结构,但是规定的衫薯不多,swoole干脆连结构都随意了,它的库只实现具体功能
❾ php rpc好用吗,有什么优缺点php rpc框架哪个好
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procere Call)那什么是远程调用?通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。
远程调用原理
比如 A (client) 调用 B (server) 提供的remoteAdd方法:
首先A与B之间建立一个TCP连接;
然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;
A接受远程调用结果,输出30。
RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。
远程调用的好处
解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。
RPC与Socket有什么区别?
通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?
RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等技术来实现对于远程程序的调用。微软的Windows系统中,RPC就是采用命名管道进行通信。
RPC与REST有什么区别?
通过了解RPC后,我们知道是RPC是client/server模式的,调用远程的方法,REST也是我们熟悉的一套API调用协议方法,它也是基于client/server模式的,调用远程的方法的,那他俩又有啥区别呢?
REST API 和 RPC 都是在 Server端 把一个个函数封装成接口暴露出去,以供 Client端 调用,不过 REST API 是基于HTTP协议的,REST致力于通过http协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。而 RPC 则可以不基于 HTTP协议
因此,如果是后端两种语言互相调用,用 RPC 可以获得更好的性能(省去了 HTTP 报头等一系列东西),应该也更容易配置。如果是前端通过 AJAX 调用后端,那么用 REST API 的形式比较好(因为无论如何也避不开 HTTP 这道坎)。
php中流行的rpc框架有哪些
既然php是世界上最好的语言,那php中流行的RPC框架有哪些呢?
先列举下: phprpc,yar, thrift, gRPC, swoole, hprose
因为时间和精力有限,不可能一个一个的去学习和使用,我选几个世面上用的最多的几个用下吧。因为RPC原理是一样的,都是Client/Server模式,只是每个框架的使用方式不一样而已。