composer基础使用
Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。
composer -v
查看版本
推荐使用阿里云全量镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如仅当前项目使用则可去除-g
选项。
取消配置:composer config -g --unset repos.packagist
Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。
composer -v
查看版本
推荐使用阿里云全量镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如仅当前项目使用则可去除-g
选项。
取消配置:composer config -g --unset repos.packagist
APCu 前身是 APC,一个免费开源且应用很广的字节码和对象缓存软件。APC分为系统缓存和用户缓存:
1、系统缓存是指PHP执行时增加缓存,减少PHP文件的反复检查和编译,从而达到系统加速的目的。
2、用户缓存是指,PHP代码中将数据写入缓存,是用户写入的数据,通过key和value的键值方式插入和读取。这种数据叫用户缓存。
PHP5.5以后,opcache代替APC做为PHP加速的位置,也就是代替其系统缓存的位置。并将用户缓存功能独立出来,开启新的组件,叫APCu。
其他可选缓存方案:redis/memcache:如果要做分布式存储可以使用,否则不推荐使用,因为redis/memcache需要tcp通信,即使本地也需要unix domain socket通信,其效率远不如共享内存的apcu。
<?php
// 制定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:*');
//请求头
header('Access-Control-Allow-Headers:*');
// 响应头设置
header('Access-Control-Allow-Credentials:false');
//节假日 需要手动维护配置文件或者放入db中
$holiday=['2019-01-01', '2019-01-05', '2019-01-06', '2019-01-12', '2019-01-13', '2019-01-19', '2019-01-20', '2019-01-26', '2019-01-27', '2019-02-04', '2019-02-05', '2019-02-06', '2019-02-07', '2019-02-08', '2019-02-09', '2019-02-10', '2019-02-16', '2019-02-17', '2019-02-23', '2019-02-24', '2019-03-02', '2019-03-03', '2019-03-09', '2019-03-10', '2019-03-16', '2019-03-17', '2019-03-23', '2019-03-24', '2019-03-30', '2019-03-31', '2019-04-05', '2019-04-06', '2019-04-07', '2019-04-13', '2019-04-14', '2019-04-20', '2019-04-21', '2019-04-27', '2019-05-01', '2019-05-02', '2019-05-03', '2019-05-04', '2019-05-11', '2019-05-12', '2019-05-18', '2019-05-19', '2019-05-25', '2019-05-26', '2019-06-01', '2019-06-02', '2019-06-07', '2019-06-08', '2019-06-09', '2019-06-15', '2019-06-16', '2019-06-22', '2019-06-23', '2019-06-29', '2019-06-30', '2019-07-06', '2019-07-07', '2019-07-13', '2019-07-14', '2019-07-20', '2019-07-21', '2019-07-27', '2019-07-28', '2019-08-03', '2019-08-04', '2019-08-10', '2019-08-11', '2019-08-17', '2019-08-18', '2019-08-24', '2019-08-25', '2019-08-31', '2019-09-01', '2019-09-07', '2019-09-08', '2019-09-13', '2019-09-14', '2019-09-15', '2019-09-21', '2019-09-22', '2019-09-28', '2019-10-01', '2019-10-02', '2019-10-03', '2019-10-04', '2019-10-05', '2019-10-06', '2019-10-07', '2019-10-13', '2019-10-19', '2019-10-20', '2019-10-26', '2019-10-27', '2019-11-02', '2019-11-03', '2019-11-09', '2019-11-10', '2019-11-16', '2019-11-17', '2019-11-23', '2019-11-24', '2019-11-30', '2019-12-01', '2019-12-07', '2019-12-08', '2019-12-14', '2019-12-15', '2019-12-21', '2019-12-22', '2019-12-28', '2019-12-29'];
function afterWorkDay($start_timestamp='',$add_workday_num='',$holiday=[]){
//实际工作时间数组
$workday=array();
$i=0;
//判断实际工作时间数组的长度
while(count($workday)<intval($add_workday_num)){
$i++;
$onewdate=date('Y-m-d',($start_timestamp)+$i*(60*60*24));
//非节假日添加实际工作时间数组
if(!in_array($onewdate,$holiday)){
$workday[]=$onewdate;
}
}
return date('Y-m-d',($start_timestamp)+$i*(60*60*24));
}
$day = $_GET['day'];
$date = $_GET['date'];
$day = (int)$day - 1;
$start_time=strtotime($date);
//计算N个工作日后的时间 $N-1对应共N天
echo afterWorkDay($start_time,$day,$holiday);
所有依赖都存在composer.json中,由于composer.json中相应库版本号未必为精确版本,所以同一份composer.json在不同时刻我们可能拉取到不同的依赖文件(默认拉取最新),从而可能导致问题。
当你执行composer update的时候,composer会去读取composer.json中指定的依赖,去分析他们,并且去拉取符合条件最新版本的依赖。然后他会把所拉取到的依赖放入vendor目录下,并且把所有拉取的依赖的精确版本号写入composer.lock文件中。
composer install所执行的事情非常类似,只在第一步的时候有差别。当你本地如果已经存在一份composer.lock时,它将会去读取你的composer.lock而非composer.json,并且以此为标准去下载依赖。当你本地没有composer.lock的时候,它所做的事情和composer update其实并没有区别。
可指定依赖更新,如 composer update monolog/monolog
解决:https://github.com/ramsey/uuid/issues/153
This is correct. Some of the math involved when dealing with UUIDs is impossible on 32-bit systems. This is because a UUID is an unsigned 128-bit integer, and the time portion of a version 1 UUID is an unsigned 64-bit number. PHP on a 32-bit system only supports signed integers up to 2147483647
.
Installing the moontoast/math library should fix your issue:
composer require moontoast/math
最近搞一个微信分享吸粉的活动,需要生成用户推广海报,使用TP的图像处理类可轻易添加昵称、图片、二维码等水印信息。但在生成此海报时,由于下载微信头像到本地/服务器用时太长,导致海报生成时间过长问题。
解决方法
使用curl压缩下载图片,加速图片下载速度,实现海报生成速度由8s
左右到1s
的提升。
时常用date("Y-m-d",strtotime("-1 month"))
获取上个月的日期,其实它并不靠谱。
如当前日期未3月3,则:var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2018-03-31"))));
得到的结果并非2018-02-28而是2018-03-03
正确的方式之一是添加last day of
first day of
:var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));