com.jukusoft / php-scaling-core-framework
php-scaling-core-framework,一个用于使用PHP 7快速、灵活和可扩展的Web应用程序的基本框架。
Requires
- php: >=7.0.8
This package is not auto-updated.
Last update: 2024-09-14 18:53:16 UTC
README
一个用于在PHP中创建更好可扩展Web应用程序的小型PHP框架。
当前版本:0.0.1 (预alpha版)
作为contentlion.org(目前Contentlion有点过时)的开发者,我想创建一个可以用于许多可扩展PHP系统的小型框架,例如CMS等。
计划功能
- 高级别的缓存API,因此您的应用程序不必了解缓存机制
- 文件缓存(已完成)
- Memcache(已完成)
- Hazelcast Cache(已完成)
- 也可以添加其他缓存
- 小型数据库管理(连接、实例和更新)
- 分布式会话管理(用于扩展,已完成)
- 事件/钩子系统
- 移动设备检测
- 多域名支持
- 用户计数器/统计
- 智能HTTP缓存
- 多语言系统
- 等等
目标
- 非常灵活
- 非常快/高性能
- 易于扩展(使用插件等)
- 易于使用
- 尽可能帮助构建安全的应用程序(针对SQL注入、SSRF、CSRF攻击等)
- SEO(更高水平)
- 等等
仍在开发中!
如何使用
下载/复制所有这些文件。目录"framework"中的所有文件都是必需的,其他文件都是可选的。您的脚本必须包含framework/lib/init.php,自动加载器将被自动添加。
扩展
此框架设计得非常容易扩展,但有一些事情需要注意
- 您不能首先使用文件缓存
- 如果可以,请使用和CDN(内容分发网络)来分发静态文件,如图片
最佳情况下,您使用带有持久会话的负载均衡器,以便相同的客户端将路由到同一台Web服务器(如果该Web服务器可用)。您可以使用haproxy(haproxy.com)作为代理服务器。
链接
- http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/
- https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-http-load-balancing-on-an-ubuntu-vps
- https://www.howtoforge.com/tutorial/ubuntu-load-balancer-haproxy/
如何在memcache(d)中存储会话
首先您必须使用memcache(d)作为第一级缓存,然后您需要编辑framework/lib/store/settings/settings.php并编辑文件的部分
'session' => array(
'enabled' => true,
/**
* handler types:
*
* - default - use php internal session handler, dont override session handler
*/
'handler' => "CacheSessionHandler",
'ttl' => 180 * 60,
)
您必须将"handler"设置为"CacheSessionHandler"。CacheSessionHandler将默认使用第一级缓存来存储会话。
要求
- PHP 7.0.7+(它也可以在PHP 5.4下工作,但我不能保证这一点)
- MySQL 5.7+或PostGreSQL 9.4+
可选
- memcached 2.0.0+(用于更快的缓存和文件I/O优化)
文件权限
- chmod 755 /framework/cache
- chmod 755 /framework/lib/store
- chmod 755 /framework/store
数据库
默认情况下支持mysql数据库,但您也可以使用其他一些关系数据库,如果您有相应的驱动程序。
以下数据库默认支持
- MySQL 5.7+
- PostgreSQL 9.4+
如果您编写了一个实现接口DBDriver的数据库驱动程序,您可以为其他数据库添加支持。
数据库限制
出于安全原因,以下mysql函数不允许使用
- LOAD_FILE - 此命令常被SQL注入攻击者使用,因为许多MySQL服务器以root权限运行,它允许黑客读取文件系统上的所有文件。许多应用程序不需要此命令,因此本框架不允许使用LOAD_FILE。
- INTO OUTFILE - 与LOAD_FILE类似,此命令也常被SQL注入攻击者使用。在有root权限的情况下,黑客可以,例如,选择所有数据库查询并将它们保存在Web服务器上的公开文件中以便下载,或者他们可以编写配置文件。
- 访问数据库INFORMATION_SCHEMA - 在虚拟数据库INFORMATION_SCHEMA中存储了许多MySQL的元数据,黑客可以利用这些元数据更快地攻击网站/数据库。
缓存
有2个缓存级别
- 第一级缓存(例如,会话缓存)
- 第二级缓存(例如,数据库查询缓存等)
对于每个缓存级别,您可以设置另一个缓存处理器(可选)。
本框架支持一些类型的缓存处理器,您可以通过插件扩展其他缓存类型。
- 文件缓存(默认,但若要扩展则不能使用)
- memcache
- memcached(与memcache不同!如果可能,请使用memcached,因为memcached更快)
- Hazelcast (http://hazelcast.org) 缓存
- Redis(正在进行中,尚未实现)