prospress / hosts-helper
处理特定主机提供商的辅助类。
Requires
- php: ^5.3 || ^7.0
Requires (Dev)
This package is auto-updated.
Last update: 2023-08-29 05:03:09 UTC
README
重要:本代码提供仅供参考,但不提供任何保证。有关详细信息,请参阅包含在代码中的GNU通用公共许可证。Automattic或WooCommerce支持服务也无法协助使用此代码。
Prospress Hosts Helper
此库提供了一个易于使用的接口,用于识别管理型WP主机的一些已知特性。
要求
由于使用了命名空间,此库需要 PHP 5.3+。
已识别的主机
目前有4个已识别的主机环境
- Pantheon
- SiteGround
- WP Engine
- 所有其他主机
注意:Prospress不推荐任何特定主机提供商。
自动加载
Composer自动加载器
在使用此库之前,您需要初始化 Composer
composer install
然后您的代码可以 require
vendor/autoloader.php
文件来自动加载此库中使用的类。
自定义自动加载器
如果您出于任何原因不想使用Composer,您可以使用自定义的 PSR-4自动加载器。您可以自己编写,或者使用现有的一个。现有的一个不错的自动加载器是WP CLI中实现的。然后您需要将此库的 src/
目录与 Prospress\Hosts
命名空间相关联。
用法
要获取提供当前主机信息的类实现,您应使用 Prospress\Hosts\Helper::getHost()
方法。这将提供一个基于检测到的主机环境的类实例。
目前此库有两个用途
- 确定当前环境的脚本超时。
- 确定是否终止了特定字符长度的数据库查询。如果终止了,有方法可以取消钩子和重新钩子终止功能。
脚本超时
要获取当前主机的脚本超时,您可以使用 getTimeout()
方法
<?php use Prospress\Hosts\Helper; $timeout = Helper::getHost()->getTimeout();
getTimeout()
方法是 Prospress\Hosts\HostInterface
接口的一部分。所有可以由 Helper::getHost()
返回的类对象都实现了此接口。
查询终止
此内容仅适用于WP Engine
可以确定当前主机是否已设置查询杀手
<?php use Prospress\Hosts\Helper; $are_queries_killed = Helper::areQueriesKilled();
使用Helper::areQueriesKilled()
方法对所有主机提供商都是安全的,并且是推荐的方式来确定当前环境中是否已杀死查询。
此库还便于插件绕过查询杀手。如果主机提供商设置了一些查询杀手的机制,那么由Helper::getHost()
返回的类实例将实现Prospress\Hosts\KillsQueries
接口,同时实现上述提到的HostInterface
接口。此接口提供了3个方法
areQueriesKilled()
– 返回一个bool
值,表示是否已杀死查询。unhookQueryKiller()
– 这将从WordPress中的钩子移除查询杀手。rehookQueryKiller()
– 这将查询杀手代码重新添加到WordPress中的钩子。
这些辅助方法旨在允许开发者有选择地移除查询杀手。具体来说,查询杀手应该在数据库查询之前立即移除,然后在查询完成后立即再次添加。以下是一个示例:
<?php use Prospress\Hosts\Helper; global $wpdb; if ( Helper::areQueriesKilled() ) { Helper::getHost()->unhookQueryKiller(); } $result = $wpdb->query(/* your long query here */); if ( Helper::areQueriesKilled() ) { Helper::getHost()->rehookQueryKiller(); }