index
2020-06-15
2019-08-15
1.添加:echo "1 * * * * /home/test" >> /user/crontabfile 2.删除:sed -i '/test/d' /user/crontabfile 3.然后 crontab /user/crontabfile 就行了. 查看cron: crontab -l 关闭cron: crontab -r
laravel开启了opcache,每个请求平均30毫秒,还有swoole加速,redis高并发,机器学习有PHP-ML。 php7/laravel5.8/swoole/微服务 当PHP作为Apache的模块安装时,PHP没有独立的进程,而是作为模块以DLL的形式被加载到Apache中的,是随Apache的启动而启动的,而Windows下的Apache为多线程工作模式,因此PHP自然也就运行在多线程模式下。因此,这种情况下应使用PHP的线程安全版本。 在Apache中以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,故应使用PHP的非线程安全版本以提高性能。 windows安装: vim conf/httpd.conf LoadModule php7_module d:\php-7.3\php7apache2_4.dll AddType application/x-httpd-php .php .html .htm <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> #设置路径 DocumentRoot "d:\phpweb\myPHP" <Directory "d:\phpweb\myPHP"> httpd -k start httpd -k restart net start apache 打开服务托管 ApacheMonitor.exe 改名php.ini,打开extesion设置
升级PHP
升级将覆盖php.ini upgrade_php.sh 安装fileinfo cd php_7.2.28 find . -name fileinfo cd ext/fileinfo phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install vim /usr/local/php/etc/php.ini extesion=fileinfo.so
windows安装apache + php + mysql
apache下载地址: https://www.apachehaus.com/cgi-bin/download.plx php下载地址(Thread Safe版本): https://windows.php.net/download/ mysql下载地址: https://dev.mysql.com/downloads/installer/ #安装openssl v1.1.1以上版本(支持TLSv1.3) #http://slproweb.com/products/Win32OpenSSL.html #https://www.openssl.org/source/ Apache24目前不支持TLSv1.3, httpd.conf文件注释如下行: # Define ENABLE_TLS13 "Yes" 设置windows环境变量 path +=d:\php-71;d:\php-71\ext; 以管理员身份运行httpd -k install初始化服务 (httpd -k start 启动服务) ***由于httpd.conf中配置php模块,apache和php要选相同的VC版本 设置php.ini extension_dir = '/ext' extenstion=php_mysqli.dll extension=php_mbstring.dll
2019-01-15
laravel导入数据出错
php遇到Allowed memory size of 134217728 bytes exhausted问题解决方法 php.ini修改: memory_limit=1280M
在php 5.2以后添加,为系统安全,php.ini增加设置: allow_url_fopen = On (允许打开URL文件,预设启用) allow_url_include = Off (禁止引用URL文件,新版增加功能,预设关闭) 其实也不能完全阻止远端调用及其所带来的安全隐忧, 而且它们只是保护了标记为URL的句柄, 也就是说只能影响http(s)和ftp(s)的调用, 但对包含其他标记的远端调用,例如对PHP5.2.0 新版所提供的php和data则无能为力,而这些调用一样会导致注入风险
打开php.ini, 将default_socket_timeout值调大。如:default_socket_timeout=360(默认为-1或60)
blob:https://www.xiami.com/5833bba0-b770-40e0-9226-9197b239e898
深入理解xhr的responseType中blob和arrayBuffer
PHP 读取文件,返回二进制流
$file_dir = xxxxx; //使用file_exists判断文件是否存 ob_end_clean(); ob_start(); //打开文件 $handler = fopen($file_dir, 'r+b'); $file_size = filesize($file_dir); //声明头信息 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length: ".$file_size); Header("Content-Disposition: attachment; filename=" . basename( $file_dir)); // 输出文件内容 echo fread($handler,$file_size); fclose($handler); ob_end_flush(); exit;
2018-10-05
安装并配置redis
yum install tcl 下载并安装 wget http://download.redis.io/releases/redis-4.0.11.tar.gz tar zxvf redis-4.0.11.tar.gz cd redis_4.0.11 make && make install cp utils/redis_init_script /etc/init.d/redis_6379 REDISPORT为端口号,对应配置文件名 mkdir /etc/redis/ #存放redis配置文件 mkdir /var/redis/6379/ #存放redis持久化文件 cp redis.conf /etc/redis/6379.conf #vim /etc/redis/6379.conf daemonize yes #设置为守护进程模式 pidfile /var/run/redis_6379.pid #设置redis的pid文件 port 6379 dir /var/redis/6379 #设置持久化文件的位置 启动和关闭服务 /etc/init.d/redis_6379 start /etc/init.d/redis_6379 stop 设置开机启动 #vim /etc/init.d/redis_6379 chkconfig: 2345 90 10 description: Redis is a persistent key-value database chkconfig redis_6379 on 启动和关闭服务 service redis_6379 start service redis_6379 stop 安全关闭redis redis-cli SHUTDOWN 安装PHP redis扩展 wget https://github.com/nicolasff/phpredis/archive/master.zip unzip master.zip cd phpredis /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install make test #vim /usr/local/php/etc/php.ini extension=redis.so nginx -s reload service php-fpm restart
2018-02-06
--disable-web-security --user-data-dir=C:\mychromeuserdata
APC与Memcached
APC是PHP的一个扩展,会加载在PHP的进程中,除了可以将PHP代码解释成OPCode保存在内存中之外,还能在PHP的进程之间使用共享内存(系统内核的数据结构)来保存数据,而且完全透明 而Memcached是一个外部的服务,要通过tcp或udp的网络协议来共享/缓存数据 好处是可以在多台机器之间共享、缓存数据,或者是与其他非php应用共享数据, 但由于使用网络协议进行交互,而且在交互过程中需要对php对象进行序列化、反序列化等,延迟较直接集成在PHP进程中的APC大很多 Facebook同时使用了APC和Memcache作了两层缓存 APC更多时候用作Opcode Cache, 而MemCache是用作ContentCache. APC用作Content Cache的时候, 它是单机Cache. 而MemCache可以实现多机共享. 所以类似一些Session共享问题, 就只能用类似MemCache的缓存.
Apache+PHP的和Nginx+PHP的区别
Apache 一般把 PHP 当作自己的一个模块来启动; Nginx 则是把 HTTP 请求变量(如 get,user_agent)转发给 PHP 独立进程,与 Nginx 进行通信,称为 fastcgi 运行方式。 因此,为 Apache 所编译的 PHP 是不能用于 Nginx 的;为 Nginx 所编译的 PHP 要以 fpm(fastcgi,fastcgi 通俗地讲就是两个程序之间的通信)方式运行。 nginx配置: location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/www/test02$fastcgi_script_name; } fastcgi_pass 用来指定php-fpm监听的地址或者socket fastcgi_index index.php #设定访问根目录默认去找的文件 fastcgi_param SCRIPT_FILENAME /data/www/test02$fastcgi_script_name #设置访问根目录时默认寻找的文件 php-fpm配置: php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic
Session
PHP在使用默认的 session.save_handler = files 方式时,PHPSESSIONID的生产算法原理如下: hash_func = md5 / sha1 #可由php.ini配置 PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器) 黑客如果要猜出某一用户的PHPSESSIONID,则他也必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据方可模拟。
2018-01-24
PHP命令行
php -h //获取帮助 php test.PHP php -f test.PHP php -r 'phpinfo();' php -r 'phpinfo();' | grep php.ini //获取配置文件所在的位置 php --ini //获取配置文件所在的位置
2018-01-21
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net"); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); $output = curl_exec($ch); if($output === FALSE ){ echo "CURL Error:".curl_error($ch); } $info = curl_getinfo($ch); echo $info['url'] . $info['total_time'] curl_close($ch);
2017-11-14
heredoc技术(EOT EOD EOF)
print <<<EOF <li class="ui-border-t"> <div class="ui-list-img"> <span style="background-image:url(https://www.hkcd.com/{$news['image']})"></span> </div> <div class="ui-list-info"> <h4 class="ui-nowrap">{$news['title']}</h4> <p class="ui-nowrap">{$news['jianjie']}</p> </div> </li> EOF;
2017-09-25
在php.ini中,找到disable_functions选项,看看后面是否有proc_open函数被禁用了,如果有的话,去掉即可
2017-05-12
处理跨域的方法2 -- XHR2
“XHR2” 全称 “XMLHttpRequest Level2” 是HTML5提供的方法,对跨域访问提供了很好的支持,并且还有一些新的功能。 * IE10一下的版本都不支持 * 只需要在服务器端头部加上下面两句代码: header( "Access-Control-Allow-Origin:*" ); header( "Access-Control-Allow-Methods:POST,GET" );
JSONP中的回调函数
<script> function show(json){ //函数show alert(json.s); } </script> //wd=web,搜索关键词为web;cb=show,回调函数为show <script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=web&cb=show"> </script> /*src的请求结果为: show({q:"web",p:false,s:["webqq","webqqµÇ½","web of science","web΢ÐÅ","webstorm","webservice","΢² ©","websocket","weblogic","webex"]}); */ 客户端把回调函数的名字传送给服务端, 然后服务端生成一段js代码且代码中包含着对回调函数的调用, 然后服务端把这段代码返回给客户端, 然后客户端执行这段代码的过程中调用了回调函数, 然后你就可以在回调函数里面处理数据了