vipnytt/cleanparam-url-filter

清理参数URL过滤类 - 查找并删除任何重复的URL

0.1 2016-02-07 16:52 UTC

This package is auto-updated.

Last update: 2024-09-05 05:32:09 UTC


README

Build Status Scrutinizer Code Quality Code Climate Test Coverage License Packagist Join the chat at https://gitter.im/VIPnytt/CleanParam-URL-filter

清理参数URL过滤类

PHP类,用于过滤URL重复,集成了对Yandex Clean-Param规范的支持。

SensioLabsInsight

常见问题解答

它做了什么?

它过滤您的URL列表,以便删除任何重复的页面。

如果我过滤我的URL,我会期待什么?

  • 您将不再需要重新加载重复的信息。
  • 更高效的网页抓取。
  • 服务器负载将降低。

什么是Clean-Param?

它是一个robots.txt指令,用于描述不影响页面内容的动态参数(例如会话标识符、用户、引用者等)。添加后,对被认为是重复的URL数量有显著影响。了解更多。

安装

此库可以通过Composer包进行安装。要通过Composer安装,请将需求添加到您的composer.json文件中,如下所示

{
	"require": {
		"VIPnytt/CleanParam-URL-Filter": "dev-master"
	}
}

然后使用Composer加载库

<?php
require_once('vendor/autoload.php');
$filter = new \VIPnytt\CleanParamFilter($urls);

您可以在以下链接中了解更多关于Composer的信息: https://getcomposer.org.cn/

用法

$filter = new \vipnytt\CleanParamFilter($urlArray);

// Optional: Add Clean-Param
$filter->addCleanParam($parameter, $path);

// List duplicates
print_r($filter->listDuplicate());

// List non-duplicates
print_r($filter->listApproved());

小贴士:如果您将要过滤成千上万的URL(或者更多),建议将列表拆分为最小。这可以通过按域名(甚至主机)对URL进行分组,然后分别过滤每个组来实现。这是为了性能!

问题解决

致命错误:最大执行时间超出。

原因:您可能正在尝试过滤成千上万的URL。

  1. 建议将URL列表拆分为最小。这可以通过按域名(甚至主机)分组URL来实现,然后分别过滤每个组。
  2. 通过使用set_time_limit(60);增加PHP的最大执行时间限制。调用时,它将时间限制设置为60秒,并从零重新启动超时计数器。
  3. 如果您已经正在循环URL组(如建议的那样),请将set_time_limit(60);放入循环中,以便每次解析新的一组URL时,超时计数器都会重新启动。
致命错误:允许的内存大小为134217728字节耗尽。

原因:您可能正在尝试过滤成千上万的URL,甚至更多。

  1. 在这种情况下,您需要将URL列表拆分为最小。这可以通过按域名(甚至更好的,主机)分组URL来实现,然后分别过滤每个组。
  2. 增加PHP的内存限制。这可以通过设置ini_set('memory_limit', '256M');或通过更改php.ini文件中的memory_limit变量来实现。