Получить размер файла js-файла в другом домене с помощью php - PullRequest
2 голосов
/ 11 января 2012

Как мне получить размер файла js на другом сайте.Я пытаюсь создать монитор, чтобы проверить, существует ли файл js и имеет ли он больше байтов 0.

Например, на bar.com у меня был бы следующий код:

$filename = 'http://www.foo.com/foo.js';
echo $filename . ': ' . filesize($filename) . ' bytes';

Ответы [ 4 ]

3 голосов
/ 11 января 2012

Вы можете использовать запрос HTTP HEAD.

<?php
 $url = "http://www.neti.ee/img/neti-logo.gif";
 $head = get_headers($url, 1);
 echo $head['Content-Length'];
?>

Примечание: это не настоящий запрос HEAD, а запрос GET, который PHP анализирует на предмет его Content-Length. К сожалению, имя функции PHP вводит в заблуждение. Этого может быть достаточно для небольших файлов js, но используйте реальный запрос HTTP Head с Curl для файлов большего размера, потому что тогда серверу не придется загружать весь файл и отправлять только заголовки.

В этом случае используйте код, предоставленный Jakub.

1 голос
/ 11 января 2012

Просто используйте CURL, вот очень хороший пример:
Ссылка: http://www.php.net/manual/en/function.filesize.php#92462

<?php
$remoteFile = 'http://us.php.net/get/php-5.2.10.tar.bz2/from/this/mirror';
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
  echo 'cURL failed';
  exit;
}

$contentLength = 'unknown';
$status = 'unknown';
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
  $status = (int)$matches[1];
}
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
  $contentLength = (int)$matches[1];
}

echo 'HTTP Status: ' . $status . "\n";
echo 'Content-Length: ' . $contentLength;
?>

Результат:

HTTP-статус: 302
Длина контента: 8808759

0 голосов
/ 11 января 2012

Это всего лишь два этапа:

  1. Просканируйте файл js и сохраните его в переменной
  2. Проверьте, превышает ли длина файла js 0

Вот и все !!

Вот как вы можете сделать это в PHP

<?php

$data = file_get_contents('http://www.foo.com/foo.js');

if(strlen($data)>0):
    echo "yay"
else:
    echo "nay"
?>

Примечание: вы можете использовать HTTP Head, как предложено Uku, но тогда, если вы ищете содержимое страницы, если в файле js есть содержимое, вам придется сканировать снова: (

0 голосов
/ 11 января 2012
...