linux服务器mysql数据库网站程序自动备份shell脚本到百度云。支持mariadb自动备份百度云

每天备份太辛苦了可以试下mysql数据库加网站程序自动备份shell

支持mariadb数据库自动备份

先查看下mysqldump路径
先新个sqlback.sh例如

其中
user                                         #用户名
password                                #密码
dbname                                    #数据库名
/root/                                      #要保存的目录
/usr/bin/mysqldump             #mysqldump启动            这里写which mysqldump 查询结果
/www/nmfox.com                 #web目录
SQL_FSIZE=50m                     #数据分卷大小改成自已想分的大小
WEB_FSIZE=100m                    #网站分卷大小改成自已想分的大小
换成自已服务器上的配置。

然后一天更新一次备份文件

 


如果想上传到百度云可以下载脚本

本站网盘的zip版本 http://pan.baidu.com/s/1i3vYVI1

本站下的 下载完后在root目录下 解压不用改脚本的/root/nmfox/目录


 

也可以下载bpcs_uploader官方的上传脚本
http://oott123.github.com/bpcs_uploader/
which得到你的php绝对路径

这里得到的路径是/usr/bin/php/binphp

修改bpcs_uploader.php的头一句#!后的路径

#!/usr/bin/php/bin/php -d disable_functions -d safe_mode=Off

然后改可执行权限

 

《没有百度APP KEY,百度APP SECRET怎么用百度PCS上传脚本》

可以跟着这个教程 http://www.nmfox.com/2015/10/25/401.html

查询容量(配额)

上传文件         [path_local]本地路径         [path_remote]网盘应用路径

路径格式:bpcs_uploader/file.ext(路径中一定要包括文件名)

上传后,能在       百度网盘/我的应用数据/应用名/下找到一个叫file.ext的文件。

./bpcs_uploader.php download [path_local] [path_remote]      #下载文件
./bpcs_uploader.php delete [path_remote]                  #删除文件
./bpcs_uploader.php fetch [path_remote] [path_to_fetch]    #离线下载

然后用这个shell
/root/nmfox/换成下载脚本存放的目录
脚本存放目录

如果要合卷可以

 

cat 要合的备份的文件.z* > 合成后的文件名.zip

mysql自动备份分卷脚本,mariadb自动分卷备份脚本

mysql自动备份分卷脚本

centos 。。。用zip 完成分卷压缩

有时候数据库太大了想分卷备份的话可以试下以下脚本哦
先新个sqlback.sh例如

其中

user                                         #用户名

password                                #密码

dbname                                    #数据库名

/root/                                      #要保存的目录

/usr/bin/mysqldump               #mysqldump启动

FENSIZE=10m                             #10M改成自已想分的大小

换成自已服务器上的配置。

然后保存

更改权限

最后添加到自动动行脚本就可以了

crontab -e

* 3 * * * root /root/sqlback.sh

/sbin/service crond start

如果想合卷可以用

 

linux一键安装包OneinStack支持PHP/JAVA环境一键配置

下面介绍下linux一键安装包OneinStack  支持PHP/JAVA环境一键配置

OneinStack包含以下组合:
lnmp(Linux + Nginx+ MySQL+ PHP)

lamp(Linux + Apache+ MySQL+ PHP)

lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Nginx处理静态,Apache(mod_php)处理动态PHP

lnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx处理静态,Tomcat(JDK)处理JAVA

lnmh(Linux + Nginx+ MySQL+ HHVM)

OneinStack支持系统版本(包含32和64位系统):
CentOS 5~7(包括redhat)
Debian 6~8
Ubuntu 12.04~15.04
Aliyun Linux 5.7、15.1
OneinStack特性
持续不断更新
源码编译安装,大多数源码是最新stable版,并从官方网址下载
一些安全优化
提供多个数据库版本(MySQL-5.6, MySQL-5.5, MariaDB-10.0, MariaDB-5.5, Percona-5.6, Percona-5.5)
提供多个PHP版本(php-5.3, php-5.4, php-5.5,php-5.6,php-7/phpng(RC))
提供Nginx、Tengine
提供多个Apache版本(Apache-2.4,Apache-2.2)
提供多个Tomcat版本(Tomcat-8,Tomcat-7)
提供多个JDK版本(JDK-1.8,JDK-1.7,JDK-1.6)
根据自己需求安装PHP缓存加速器,提供ZendOPcache、xcache、apcu、eAccelerator。及php加解密工具ionCube、ZendGuardLoader
根据自己需求安装Pureftpd、phpMyAdmin
根据自己需求安装Memcached、Redis
根据自己需求可使用tcmalloc或者jemalloc优化MySQL、Nginx
提供添加虚拟主机脚本
提供Nginx/Tengine、PHP、Redis、phpMyAdmin升级脚本
提供本地备份和远程备份(服务器之间rsync)脚本
提供CentOS 6、7下HHVM安装
OneinStack用到的开源软件版本如下:
# WEB # DB
nginx_version=1.9.5 mysql_6_version=5.6.27
tengine_version=2.1.1 mysql_5_version=5.5.46
apache_2_version=2.2.31 mariadb_10_version=10.0.21
apache_4_version=2.4.17 mariadb_5_version=5.5.46
tomcat_7_version=7.0.64 percona_6_version=5.6.25-73.1
tomcat_8_version=8.0.28 percona_5_version=5.5.45-37.4
# PHP # JDK
php_3_version=5.3.29 jdk_6_version=1.6.0_45
php_4_version=5.4.45 jdk_7_version=1.7.0_80
php_5_version=5.5.30 jdk_8_version=1.8.0_60
php_6_version=5.6.14
php_7_version=7.0.0RC5
# REDIS # MEMCACHED
redis_version=3.0.5 memcached_version=1.4.24
# JEMALLOC & TCMALLOC # PHPMYADMIN
tcmalloc_version=2.4 phpMyAdmin_version=4.4.15
jemalloc_version=4.0.3
# PURE-FTPD
pureftpd_version=1.0.42

官网http://oneinstack.com/

 

安装步骤

注意:如果数据盘,建议您先挂载数据盘,建议将网站内容、数据库放在数据盘中。

如何添加虚拟主机?

如何删除虚拟主机?

如何管理FTP账号?

如何备份?

如何管理服务?

Nginx/Tengine:

MySQL/MariaDB/Percona:

PHP:

HHVM:

:hhvm进程交给supervisord管理

Apache:

Tomcat:

Pure-Ftpd:

Redis:

Memcached:

如何更新版本?


如何卸载?

linux-centos7安装mariadb教程(mysql的替代品哦更强大)

mariadb做为mysql的替代品 现在centos的新版本yum包已换成mariadb

安装一些库

查看SELinux状态:
/usr/sbin/sestatus -v

#如果SELinux status参数为enabled即为开启状态;
如果为关闭可以跳过
修改/etc/selinux/config文件
vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled
重启机器

下载mariadb安装包到cd /usr/local/src/

 

 

下载地址分linux64位linux32位
linux64位下载地址
http://mirrors.opencas.cn/mariadb/mariadb-10.0.21/bintar-linux-glibc_214-x86_64/mariadb-10.0.21-linux-glibc_214-x86_64.tar.gz

linux32位下载地址
http://mirrors.opencas.cn/mariadb/mariadb-10.0.21/bintar-linux-glibc_214-x86/mariadb-10.0.21-linux-glibc_214-i686.tar.gz

将压缩包解压到/usr/local 目录下

 

创建mariadb 数据初始化目录/data/mysql这边把mysql放到云盘上data为新挂载盘

 

添加系统用户mysql,禁止登陆系统目录所属主和组都修改为mysql

做个mariadb 目录的连接

 

进入目录

 

开始安装

 

如果没有报错就复制配置文件到etc目录下

是否覆盖 选 y
y
复制mysql 启动脚本文件到/etc/init.d的目录下

修改755权限

 

定义数据存放路径

datadir=/data/mysql
将mariadb自带命令放入$PATH
PATH=$PATH:/etc/init.d/  #当前有效,重启shell就失效

 

启动mariadb

 

最后一步很重要哦 删除不用的用户新建用户

 

回车

y回车

输入root密码

再输入root密码

再回车

回车

回车 到出现

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

 

wordpress页面打开很慢的优化

 

很多朋友反馈wordpress页面打开很慢,F12查看,多为wordpress调用了googleapi字体所致。
而由于众所周知的原因,google相关的域名在大陆是无法访问的,而fonts.googleapis.com就属于其中之一。
使用fonts.googleapis.com域名时,请求全部失败,资源调用耗时10s:

第一、取消谷歌Open sans字体加载
如果我们使用的默认主题,可能前台也会有,如果我们使用的自己制作的或者第三方的主题,一般前台是没有的,只有我们在登陆账户后的前台和后台打开变慢,主要是不便于我们自己的访问和维护。我们可以通过在后台插件搜索”Disable Google Fonts”,下载安装激活这个插件就可以解决这个问题。
第二、另种方法360推出了goolgeapi替换方式:使用域名fonts.useso.com,替换后字体调用时长在1s之内:

解决方法(仅限Linux系统):
1. 进入应用目录
2.执行命令

如果安装的有模板上面有外连字体的话 下面atout为模板名字

/wp-content/themes/atout/framework/stylesheets/style.css

我的在109行左右、、找下请求的外网连接屏蔽掉

php7的编译安装高性能的php喜欢的朋友们可以看下哦

linux中安装php7

# 安装mcrypt

yum install -y php-mcrypt libmcrypt libmcrypt-devel

编译PHP7

# 下载源代码

wget  https://downloads.php.net/~ab/php-7.0.0RC5.tar.gz
tar zxvf php-7.0.0RC5.tar.gz

cd php-7.0.0RC5

# 配置参数

 

编译
make

make install

配置php
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm
chmod +x /etc/init.d/php7-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

 

vim /usr/local/php7/etc/php.ini
# 加入
zend_extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/opcache.so
# 启动
/etc/init.d/php7-fpm start
# 查看PHP版本
/usr/local/php7/bin/php -v
为了安全最好是去掉头信息  X-Powered-By: PHP/7.*.*
则修改 php.ini 文件 设置 expose_php = Off

vim /usr/local/php7/etc/php.ini

找到 expose_php = On
改为 expose_php = Off

php安全模式下被限制或屏蔽的函数

有时候开启安全模式 结果老在报错下面来看下被安全模式限制或屏蔽的函数

以下安全模式列表可能不完整或不正确。

安全模式限制函数
函数名

限制
dbmopen() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
dbase_open() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro_rowcount() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro_retrieve() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
ifx_* sql_safe_mode 限制, (!= safe mode)
ingres_* sql_safe_mode 限制, (!= safe mode)
mysql_* sql_safe_mode 限制, (!= safe mode)
pg_loimport() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
posix_mkfifo() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
dl() 当 PHP 运行在 安全模式 时,不能使用此函数。
backtick operator 当 PHP 运行在 安全模式 时,不能使用此函数。
shell_exec()(在功能上和 backticks 函数相同) 当 PHP 运行在 安全模式 时,不能使用此函数。
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
system() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
passthru() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
popen() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
fopen() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
mkdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
rmdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
rename() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
unlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
copy() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (on source and target)
chgrp() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chown() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chmod() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits
touch() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
symlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
link() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
apache_request_headers() 在安全模式下,以“authorization”(区分大小写)开头的标头将不会被返回。
header() 在安全模式下,如果设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该标头的 realm 部分。
PHP_AUTH 变量 在安全模式下,变量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但无论如何,您仍然可以使用 REMOTE_USER 来获取用户名称(USER)。(注意:仅 PHP 4.3.0 以后有效)
highlight_file(), show_source() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)
parse_ini_file() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)
set_time_limit() 在安全模式下不起作用。
max_execution_time 在安全模式下不起作用。
mail() 在安全模式下,第五个参数被屏蔽。(注意,仅自 PHP 4.2.3 起受影响)
任何使用 php4/main/fopen_wrappers.c 的函数 ??

php命名空间的介绍与使用。

大开php5.3的版本才可以使用

php命名空间的介绍与使用

file  test1  第一个文件test1.php

file  test2  第二个文件test2.php

file  test3  第三个文件test3.php

file 4 引入前三个文件index.php

(PHP 5 >= 5.3.0)

**命名空间必须是程序脚本的第一条语句

**非常不提倡在同一个文件中定义多个命名空间

什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt 可以同时在目录/home/greg/home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到/home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。

在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。下面是一个说明 PHP 命名空间语法的示例:

命名空间语法示例

namespace my\name; // 参考 “定义命名空间” 小节

class MyClass {}
function myfunction() {}
const MYCONST = 1;

$a = new MyClass;
$c = new \my\name\MyClass; //

$a = strlen(‘hi’); // 参考 “使用命名空间:后备全局函数/常量” 小节

$d = namespace\MYCONST;

使用__NAMESPACE__动态创建名称

关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。

 

php工厂模式的介绍与使用

工厂模式:

由工厂类根据参数来决定创建出哪一种产品类的实例;

工厂类是指包含了一个专门用来创建其他对象的方法的类。所谓按需分配,传入参数进行选择,返回具体的类。工厂模式的最主要作用就是对象创建的封装、简化创建对象操作。

简单的说,就是调用工厂类的一个方法(传入参数)来得到需要的类;

代码实现

示例1(最基本的工厂类):

<?php

 

class MyObject {

 

public function __construct(){}

 

public function test(){

return ‘测试’;

}

 

}

 

class MyFactory {

 

public static function factory(){

//返回对象的实例

return new MyObject();

}

 

}

 

//调用工厂类MyFactory中的静态方法,获取类MyObject的实例

$myobject=MyFactory::factory();

echo $myobject->test();

 

示例2

<?php

//简单工厂模式

/1*

* 定义运算类

*/

abstract class Operation {

 

protected $_NumberA = 0;

protected $_NumberB = 0;

protected $_Result  = 0;

 

public function __construct($A,$B){

$this->_NumberA = $A;

$this->_NumberB = $B;

}

 

public function setNumber($A,$B){

$this->_NumberA = $A;

$this->_NumberB = $B;

}

 

/1*

protected function clearResult(){

$this->_Result  = 0;

}

*/

 

public function clearResult(){

$this->_Result  = 0;

}

 

//抽象方法无方法体

abstract protected function getResult();

 

}

 

//继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;

//另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)

class OperationAdd extends Operation {

 

public function getResult(){

$this->_Result=$this->_NumberA + $this->_NumberB;

return $this->_Result;

}

 

}

 

class OperationSub extends Operation {

 

public function getResult(){

$this->_Result=$this->_NumberA – $this->_NumberB;

return $this->_Result;

}

 

}

 

class OperationMul extends Operation {

 

public function getResult(){

$this->_Result=$this->_NumberA * $this->_NumberB;

return $this->_Result;

}

 

}

 

class OperationDiv extends Operation {

 

public function getResult(){

$this->_Result=$this->_NumberA / $this->_NumberB;

return $this->_Result;

}

 

}

 

class OperationFactory {

 

//创建保存实例的静态成员变量

private static $obj;

 

//创建访问实例的公共的静态方法

public static function CreateOperation($type,$A,$B){

switch($type){

case ‘+’:

self::$obj = new OperationAdd($A,$B);

break;

case ‘-‘:

self::$obj = new OperationSub($A,$B);

break;

case ‘*’:

self::$obj = new OperationMul($A,$B);

break;

case ‘/’:

self::$obj = new OperationDiv($A,$B);

break;

}

return self::$obj;

}

 

}

 

//$obj = OperationFactory::CreateOperation(‘+’);

//$obj->setNumber(4,4);

$obj = OperationFactory::CreateOperation(‘*’,5,6);

echo $obj->getResult();

/1*

echo ‘<br>’;

$obj->clearResult();

echo ‘<br>’;

echo $obj->_Result;

*/

 

示例3:

<?php

//抽象工厂

 

//青铜会员的打折商品

class BronzeRebateCommodity {

//描述

public $desc = ‘青铜会员的打折商品’;

}

 

//白银会员的打折商品

class SilverRebateCommodity {

public $desc = ‘白银会员的打折商品’;

}

 

//青铜会员的推荐商品

class BronzeCommendatoryCommodity {

public $desc = ‘青铜会员的推荐商品’;

}

 

//白银会员的推荐商品

class SilverCommendatoryCommodity {

public $desc = ‘白银会员的推荐商品’;

}

 

//各个工厂的接口

interface ConcreteFactory {

//生产对象的方法

public function create($what);

}

 

//青铜工厂

class BronzeFactory implements ConcreteFactory {

 

//生产对象的方法

public function create($what){

$productName = ‘Bronze’.$what.’Commodity’;

return new $productName;

}

 

}

 

//白银工厂

class SilverFactory implements ConcreteFactory {

 

//生产对象的方法

public function create($what){

$productName = ‘Silver’.$what.’Commodity’;

return new $productName;

}

 

}

 

//调度中心

class CenterFactory {

 

//获取工厂的方法

public function getFactory($what){

$factoryName = $what.’Factory’;

return new $factoryName;

}

 

//获取工厂的静态方法

public static function getFactory2($what){

$factoryName = $what.’Factory’;

return new $factoryName;

}

 

}

 

//实例化调度中心

$center  = new CenterFactory();

//获得一个白银工厂

$factory = $center->getFactory(‘Silver’);

//让白银工厂制造一个推荐商品

$product = $factory->create(‘Commendatory’);

//得到白银会员的推荐商品

echo $product->desc.'<br>’;

 

//获得一个青铜工厂

$factory2 = CenterFactory::getFactory2(‘Bronze’);

//让青铜工厂制造一个打折商品

$product2 = $factory2->create(‘Rebate’);

//得到青铜会员的推荐商品

echo $product2->desc;

 

示例4:

<?php

//使用工厂类解析图像文件

interface IImage {

 

function getWidth();

function getHeight();

function getData();

 

}

 

class Image_PNG implements IImage {

 

protected $_width,$_height,$_data;

 

public function __construct($file){

$this->_file = $file;

$this->_parse();

}

 

private function _parse(){

//完成PNG格式的解析工作

//并填充$_width,$_height和$_data

$this->_data   = getimagesize($this->_file);

list($this->_width,$this->_height)=$this->_data;

}

 

public function getWidth(){

return $this->_width;

}

 

public function getHeight(){

return $this->_height;

}

 

public function getData(){

return $this->_data;

}

 

}

 

class Image_JPEG implements IImage {

 

protected $_width,$_height,$_data;

 

public function __construct($file){

$this->_file = $file;

$this->_parse();

}

 

private function _parse(){

//完成JPEG格式的解析工作

//并填充$_width,$_height和$_data

//$this->_width  = imagesx($this->_file);

//$this->_height = imagesy($this->_file);

$this->_data   = getimagesize($this->_file);

list($this->_width,$this->_height)=$this->_data;

}

 

public function getWidth(){

return $this->_width;

}

 

public function getHeight(){

return $this->_height;

}

 

public function getData(){

return $this->_data;

}

 

}

 

//工厂类

class ImageFactory {

 

public static function factory($file){

 

$filename = pathinfo($file);

switch(strtolower($filename[‘extension’])){

case ‘jpg’:

$return = new Image_JPEG($file);

break;

case ‘png’:

$return = new Image_PNG($file);

break;

default:

echo ‘图片类型不正确’;

break;

}

if($return instanceof IImage){

return $return;

}else{

echo ‘出错了’;

exit();

}

 

}

 

}

 

$image = ImageFactory::factory(‘images/11.jpg’);

var_dump($image->getWidth());

echo ‘<br>’;

print_r($image->getheight());

echo ‘<br>’;

print_r($image->getData());

spl_autoload_register()函数的使用与介绍、跟__autoload()有什么区别

__autoload()函数spl_autoload_register()函数都是用来自动加载的有什么区别呢?

第一个index.php

加载test1.php
加载test2.php

下面看下test1.php

下面看下test2.php

修改include为自动加载 如果__autoload 函数加载两次会报致命错误

 

可以自动加载下面来试下spl_autoload_register()函数

spl_autoload_register()函数可以加载多次