你如何在PHP中获取远程域的HTTP状态代码?

6 php

我想创建一个批处理脚本,在数据库中浏览20,000个链接,并清除所有404等.我如何获取远程URL的HTTP状态代码?

最好不要使用卷曲,因为我没有安装它.

Ada*_*rce 13

CURL会很完美但是因为你没有它,你将不得不陷入肮脏的插座.该技术是:

  1. 打开服务器的套接字.
  2. 发送HTTP HEAD请求.
  3. 解析响应.

这是一个简单的例子:

<?php

$url = parse_url('http://www.example.com/index.html');

$host = $url['host'];
$port = $url['port'];
$path = $url['path'];
$query = $url['query'];
if(!$port)
    $port = 80;

$request = "HEAD $path?$query HTTP/1.1\r\n"
          ."Host: $host\r\n"
          ."Connection: close\r\n"
          ."\r\n";

$address = gethostbyname($host);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $address, $port);

socket_write($socket, $request, strlen($request));

$response = split(' ', socket_read($socket, 1024));

print "<p>Response: ". $response[1] ."</p>\r\n";

socket_close($socket);

?>
Run Code Online (Sandbox Code Playgroud)

更新:我添加了几行来解析URL