php url别名,编写PHP程序实现Drupal中pathauto模块的批量生成URL别名(Alias)

为了网站SEO的需要,我在Drupal中安装了第三方模块pathauto,用于在页面生成时自动产生一个带有关键词的URL别名。不过前一阵子导入数据的时候,pathauto的事先设置没有做好,必须在设置好了以后将前面不符合规范的别名都删除,然后重新生成。

在菜单中有批量生成Alias的功能,但默认是每次生成50个,可以修改为几百,再多了就会超时报错,而且当需要重新生成的数量到10万的时候,需要在Web页面上操作数百次以上,很不现实,只有设法编个程序来做了。

好在Drupal的用户数量很大,被数十万个网站采用,所以各种英文资料比较齐全,讨论留言中也可以找到很多有用信息。于是我搞了下面这个小程序来实现批量生成:

include_once './includes/bootstrap.inc';

include_once './sites/all/modules/pathauto/pathauto.inc';

include_once './sites/all/modules/pathauto/pathauto_node.inc';

// The URL how you would normaly access your drupal site with a browser

$province="shanghai";

$once=100;

$times=1000;

$url = "http://$province.youbianku.com";

$drupal_base_url = parse_url($url);

$_SERVER['HTTP_HOST'] = $drupal_base_url['host'];

$_SERVER['PHP_SELF'] = $drupal_base_url['path'].'/index.php';

$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'];

$_SERVER['REMOTE_ADDR'] = NULL;

$_SERVER['REQUEST_METHOD'] = NULL;

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

variable_set('pathauto_max_bulk_update', $once);

for ($i=1;$i<=$times;$i++)

{

$start=time();

echo "$province: $i/$times*$once";

_pathauto_include();

$count=node_pathauto_bulkupdate();

if ($count==0) {exit('0 alias, Done!\n');}

$stop=time();

$pass=$stop-$start;

echo "; count=$count aliases; time=$pass seconds;\n";

}

echo "Done!\n";

?>

上面是以上海为例,每次生成100个,最多运行1000次。实际使用中每次都需要10-20秒,所以整个耗时还是很长的,如果中途遇到数据库负载过高而连接中断,可以重新继续运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值