Мне нужно найти в json все прикрепленные картинки которые есть в постах?

Olga93

Новичок
Существую несколько постов, в них содержатся картинки, количество картинок и размеры этих картинок тоже может быть несколько.
Вообщем такой формат.
Items -> [index] -> attachments -> [index2] -> photo -> sizes -> [index3] -> (url,width,height);

Где
Items -> общий раздел со всеми постами
Index -> номер поста
Attachments -> прикрепленные файлы
Index2 -> номер прикрепленного файла
Photo -> тип файла (может быть и видео, но мне пока нужно фото)
Sizes -> размеры фотографий (массив)
Index3 -> номер массива size.
(url, width, height) – содержание ячеек, url-адрес, ширина и высота.
Структура моих данных json, которые отображаются через сервис http://jsonviewer.stack.hu.
Screenshot1.jpg
Мне нужно каким-то образом запустить несколько циклов и получить все картинки для одного поста, а также все размеры этих картинок и так для каждого поста. Такая структура сложная, что я уже путаться стала. Данные почему-то выводятся так, сначала первая итерация, для первого поста, вторая итерация прибавляются данные второго поста, потом еще раз дописываются данные 3-его поста и т.д.

Вот мой код полностью:
PHP:
<?php
include "config.php";
$ourData = file_get_contents("test.json");

$outcls=json_decode($ourData,true);



$posts = $outcls["response"]["items"];



foreach($posts as $post)
{
  $post_id = $post["id"];
 
  
 
  $post1 = $post["attachments"];
  $photo = [];
  $video = [];
  $link = [];
  foreach ($post1 as $atch)
  {
    if($atch["type"]=="photo")
    {
      array_push($photo,$atch["type"]);
    }
    if($atch["type"]=="video")
    {
      array_push($video,$atch["type"]);
    }
    
  }
  $data_photo = [];
  foreach ($post1 as $atch2)
  {
    
    if($atch2["type"]=="photo")
    {
     // echo "<br>photo=".count($photo)."</br>";
      
      if(count($photo)<2)
      {
        //echo "<br>test";
      
        break;
      }
      if(count($photo>1))
      {
        array_push($data_photo,$atch2["photo"]["sizes"]);
        
        
        // print_r($data_photo);
        
         //$data_photo - Первый элемент массива(0) - это номер фотографии поста
         //второй элемент массива(1) - это номер размера фотографии так как в посте предусмотрено фото нескольких
        //размеров ["height"] - размер фото
        //************************************* пример
        //**$data_photo[0][1]["height"];
        //*************************************
        
        $size = [];
         for ($i = 0; $i < count($photo); $i++)
         {
          echo "<br>photo=".count($photo)."</br>";
          
          for ($j = 0; $j < count($data_photo[$i]); $j++)
          {
            //print_r($data_photo[$i][$j]);
            //array_push($size ,$data_photo[$i][$j]);
            $size[$i][$j] = $data_photo[$i][$j];
            echo $size[$i][$j]["url"]."<br>";
          }
          }
          
        
        
         //echo "[".$sz."]"."<br>";
        
     }
      
    }
    
    
    
    if($atch2["type"]=="video")
    {
      echo "<br>video=".count($video)."</br>";
      break;
    }
    
  }
 
}
?>
 

WMix

герр M:)ller
Партнер клуба
PHP:
foreach($items as $item)
    foreach($item['attachments'] as $attachment)
        foreach($attachment['photo']['sizes'] as $size)
            print_r($size);
 

Olga93

Новичок
Как установить номер поста, для каждой группы картинок. У группы картинок есть номер поста я его отметила на скриншоте.
1584
Вывожу я все в таблице, мне нужно получить примерно вот такую структуру. Для каждой группы картинок и подгруппы sizes с url обозначить номер поста, пример ниже.
1586
Вот пример кода.
PHP:
<?php
include "config.php";
$ourData = file_get_contents("test.json");



$outcls=json_decode($ourData,true);



$posts = $outcls["response"]["items"];


foreach($posts as $item)
{
    $count = 0;
    //print_r($item);
    foreach($item['attachments'] as $attachment)
    {
      echo "<br>===================================PHOTO<br>";
       echo "<table border=\"1\" cellspacing=\"0\">";
      
        foreach($attachment['photo']['sizes'] as $size)
        {
          $width = $size["width"];
          $height = $size["height"];
          $url = $size["url"];
          echo  "<tr><td>Пост № 1.)</td><td>$width x $height</td><td>$url</td></tr>";
          $count++; 
        }
        echo "</table>";
    }
}
?>
 

Olga93

Новичок
вообще это индекс в массиве, на него не стоит опираться, но чтоб его получть
Почему на него лучше не опираться и какой другой вариант можно применить за место этого?
 

WMix

герр M:)ller
Партнер клуба
Почему на него лучше не опираться
я точно не знаю что ты делаешь, но нужно понимать, что в 2х запросах порядок может меняться, а значит и индекс массива.
какой другой вариант можно применить
я опирался бы на id записи
 

Olga93

Новичок
У меня картинки по группам разбиты, у каждой есть свой index. В группах несколько вариаций картинок по размерам. Как выбрать минимальный index и максимальный одной картинки (у них разные размеры).
1589
Занести их нужно в соответствующие теги, минимальный index будет размещен в атрибут тега img src=””, максимальный в ссылку атрибута href. При щелчке по мини-картинки будет открываться картинка полностью.
Screenshot2.jpg
Пример кода:
PHP:
$ourData = file_get_contents("test.json");



$outcls=json_decode($ourData,true);



$posts = $outcls["response"]["items"];


foreach($posts as $itemKey => $item)
{
    $count = 0;
   
   
   
   
   
    echo "<table border=\"1\" cellspacing=\"0\">";
    echo "<tr>Пост № 1</td><td>$item[text]</td></tr><tr>";
    //print_r($item);
    foreach($item['attachments'] as $atch=>$attachment)
    {
     
        foreach($attachment['photo']['sizes'] as $sizeKey => $size)
        {
          $width = $size["width"];
          $height = $size["height"];
          $url = $size["url"];
         
          //$atch - индекс картинки
          echo "<td>$atch<a href=\"$url\"><img src=\"$url\"/></a></td>";
       
         
        }
        $count++;
     
     
    }

     echo "</tr></table>";
}
 

WMix

герр M:)ller
Партнер клуба
Как выбрать минимальный index и максимальный
если это обычный массив, то минимальный индекс это 0, а максимальный count($array)-1
если hashtable то min(array_keys($array)) и max(array_keys($array)) соответственно

даже когда пишешь такую лапшу (html + php)
PHP:
echo "<tr>Пост № 1</td><td>$item[text]</td></tr><tr>";
советую привыкать писать правильно
PHP:
echo "<tr>Пост № 1</td><td>".$item['text']."</td></tr><tr>";
и подбирать кавычки чтоб не экранировать
PHP:
echo "<td>$atch<a href=\"$url\"><img src=\"$url\"/></a></td>";
PHP:
echo '<td>'.$atch.'<a href="'.$url.'"><img src="'.$url.'"/></a></td>';
 
Последнее редактирование:

Olga93

Новичок
Получилось вывести посты, с картинками объединив их в группу и выбрав только минимальный и максимальный размер.

Максимальный размер (index картинки) я выбирала создав заранее массив и прибавляя к значению единицу, а потом полученный результат я подставляла в многомерный массив.
$url1[$atch][$url2[$atch]-1]. А как сделать подсчет максимального значение в массиве с помощью “count($array)-1”, чтобы выбрать последний index картинки?

Код:
PHP:
foreach($posts as $itemKey => $item)
{
    $count = 0;

    echo "<table border='1' cellspacing='0'>";
    echo "<tr><td><h3>Пост № ".($itemKey + 1)."</h3></td></tr><tr><td>".$item[text]."</td></tr><tr>";
  
 
    foreach($item['attachments'] as $atch=>$attachment)
    {
        $url1[] = '';
        $url2[] = '';
      
        $url2[$atch] = 0;
        if($attachment["type"]=="photo")
        {
          foreach($attachment['photo']['sizes'] as $sizeKey => $size)
          {
            $width = $size["width"];
            $height = $size["height"];
            $url = $size["url"];
            $url1[$atch][$sizeKey] = $url;
            $url2[$atch] += 1;
          }
          echo "<td><a target='_blank' href='".$url1[$atch][$url2[$atch]-1]."'><img src='".$url1[$atch][0]."'/></a></td>";
        }
        $count++;
    }
echo "</tr></table>";
}
Результат вывода информации:
screen_img.jpg
 

WMix

герр M:)ller
Партнер клуба
Это Warning
если правильно понял. (!!кавычки наоборот!!)
PHP:
echo '<td><a target="_blank" href="'.
        $attachment['photo']['sizes'][(count($attachment['photo']['sizes'])-1)]['url'].
        '"><img src="'.
         $attachment['photo']['sizes'][0]['url'].
        '"/></a></td>';
но дальше сама
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
существует способ писать наоборот, не php c html, а html с php. оно конечно не намного читабильней, но IDE понимает лучше
PHP:
<?php
// вычисляем и создаем удобную структуру
$out = [];
foreach($posts as $itemKey => $item)
{
    $tmp = [
        'title' => 'Пост № '.($itemKey + 1),
        'text' => $item['text']
    ];
    foreach($item['attachments'] as $attachment){
        if($attachment["type"]=="photo"){
            $tmp['photos'][] = [
                'small' => $attachment['photo']['sizes'][0]['url'],
                'big' => $attachment['photo']['sizes'][(count($attachment['photo']['sizes'])-1)]['url']
            ];
        }
    }
    $out[] = $tmp;
}
// print_r($out); // для дебага
?>
<!-- Рисуем -->
<?php foreach($out as $row): ?>
    <table border="1" cellspacing="0">
        <tr>
            <td>
                <h3><?=$row['title']?></h3>
            </td>
        </tr>
        <tr>
            <td><?=$row['text']?></td>
        </tr>
        <tr>
            <td>
                <table>
                    <tr>
                    <?php foreach($row['photos'] as $photo): ?>
                        <td>
                            <a target="_blank" href="<?=$photo['big']?>">
                                <img src="<?=$photo['small']?>"/>
                            </a>
                        </td>
                    <?php endforeach; ?>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
<?php endforeach; ?>
еще лучше взглянуть на twig
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Любопытные результаты я тут получил… кто-нибудь может объяснить?

1. Если заранее подготовить массив, и вставлять переменную из массива, интерполяция оказывается дешевле:
PHP:
<?php

$nTests = 10000000;
$result = 0;
$arr = [];

for($i = 0; $i < $nTests; $i++)
{
  $arr[] = sprintf("%04d", $i);
}

$name = 'Interpolation';
ob_start();
$_start = microtime(true);
foreach($arr as $s)
{
  $unused = "<tr>Пост № 1</td><td>{$s}</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;

$name = 'Concatenation';
ob_start();
$_start = microtime(true);
foreach($arr as $s)
{
  $unused = "<tr>Пост № 1</td><td>".$s."</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;
// Interpolation in 0.6084 sec,   0.0
// Concatenation in 0.6708 sec, 110.3 (+10%)
А вот если то же самое готовить прямо в цикле, интерполяция оказывается дороже. Что за?
PHP:
<?php

$nTests = 1000000;
$result = 0;

$name = 'Interpolation';
ob_start();
$_start = microtime(true);
for($i = 0; $i < $nTests; $i++)
{
  $s = sprintf("%04d", $i);
  $unused = "<tr>Пост № 1</td><td>{$s}</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;

$name = 'Concatenation';
ob_start();
$_start = microtime(true);
for($i = 0; $i < $nTests; $i++)
{
  $s = sprintf("%04d", $i);
  $unused = "<tr>Пост № 1</td><td>".$s."</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;
// Interpolation in 5.5565 sec,   0.0
// Concatenation in 5.5223 sec,  99.4 (от 0.1% до 1%)
 

Тугай

Новичок
@AnrDaemon
У меня одинаковая скорость в обоих тестах, и то интерполяция быстрее, то конкатенация, погоняй больше раз, нет эффекта.
php7.4
 

AmdY

Пью пиво
Команда форума
Любопытные результаты я тут получил… кто-нибудь может объяснить?

1. Если заранее подготовить массив, и вставлять переменную из массива, интерполяция оказывается дешевле:
PHP:
<?php

$nTests = 10000000;
$result = 0;
$arr = [];

for($i = 0; $i < $nTests; $i++)
{
  $arr[] = sprintf("%04d", $i);
}

$name = 'Interpolation';
ob_start();
$_start = microtime(true);
foreach($arr as $s)
{
  $unused = "<tr>Пост № 1</td><td>{$s}</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;

$name = 'Concatenation';
ob_start();
$_start = microtime(true);
foreach($arr as $s)
{
  $unused = "<tr>Пост № 1</td><td>".$s."</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;
// Interpolation in 0.6084 sec,   0.0
// Concatenation in 0.6708 sec, 110.3 (+10%)
А вот если то же самое готовить прямо в цикле, интерполяция оказывается дороже. Что за?
PHP:
<?php

$nTests = 1000000;
$result = 0;

$name = 'Interpolation';
ob_start();
$_start = microtime(true);
for($i = 0; $i < $nTests; $i++)
{
  $s = sprintf("%04d", $i);
  $unused = "<tr>Пост № 1</td><td>{$s}</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;

$name = 'Concatenation';
ob_start();
$_start = microtime(true);
for($i = 0; $i < $nTests; $i++)
{
  $s = sprintf("%04d", $i);
  $unused = "<tr>Пост № 1</td><td>".$s."</td></tr><tr>";
}
$_end = microtime(true);
ob_end_clean();

$_runtime = $_end - $_start;
printf("%-8s in %.4f sec, %5.1f\n", $name, $_runtime, ($result & 1) * 100 * ($_runtime / ($_old ?? $_runtime)));
$_old = $_runtime;
$result++;
// Interpolation in 5.5565 sec,   0.0
// Concatenation in 5.5223 sec,  99.4 (от 0.1% до 1%)
Всё логично. При конкотенации создаются промежуточные переменные и выделяется память. При интерполяции лишь одна переменная. При росте количества склеиваний, потери будут геометрическими.
Второй случай на нет сводит дорогой вызов функции, который нивелирует разницу.
 

AnrDaemon

Продвинутый новичок
Моя логика была, что код одинаковый весь, кроме одного отдельно взятого момента.
PHP вроде как не использует оптимизацию настолько, чтобы поменялся порядок строк исходного скрипта?
 

Тугай

Новичок
одинаково оно работает :) opcode можно смотреть через phpdbg -p
Код:
$a = 'x';
$s = '1' . $a . '2'. $a . '3' . $a .'4' . $a . '5';
$s = "1${a}2${a}3${a}4${a}5";

opcode :

L2    #0     ASSIGN                  $a                   "x"                                   
L3    #1     CONCAT                  "1"                  $a                   ~1               
L3    #2     CONCAT                  ~1                   "2"                  ~2               
L3    #3     CONCAT                  ~2                   $a                   ~3               
L3    #4     CONCAT                  ~3                   "3"                  ~4               
L3    #5     CONCAT                  ~4                   $a                   ~5               
L3    #6     CONCAT                  ~5                   "4"                  ~6               
L3    #7     CONCAT                  ~6                   $a                   ~7               
L3    #8     CONCAT                  ~7                   "5"                  ~8               
L3    #9     ASSIGN                  $s                   ~8                                     
L4    #10    ROPE_INIT<9>                                 "1"                  ~11               
L4    #11    ROPE_ADD<1>             ~11                  $a                   ~11               
L4    #12    ROPE_ADD<2>             ~11                  "2"                  ~11               
L4    #13    ROPE_ADD<3>             ~11                  $a                   ~11               
L4    #14    ROPE_ADD<4>             ~11                  "3"                  ~11               
L4    #15    ROPE_ADD<5>             ~11                  $a                   ~11               
L4    #16    ROPE_ADD<6>             ~11                  "4"                  ~11               
L4    #17    ROPE_ADD<7>             ~11                  $a                   ~11               
L4    #18    ROPE_END<8>             ~11                  "5"                  ~10               
L4    #19    ASSIGN                  $s                   ~10
AmdY прав на счет того что конкатенация создает внутренние переменные, но видимо оpcode так работает что ~1, ~2 это указатели какие-то
и ~1 и ~2 вполне могут пресекаться в памяти, и по скорости нет разницы, а по памяти конкатенация требует больше на размер указателя и длинны для каждого слагаемого. Точнее надо исходники смотреть, но сколько там скорость RAM 6-20 Gb/s, так что хз надо ли оно. :)
 
Последнее редактирование:

Yoskaldyr

"Спамер"
Партнер клуба
@AnrDaemon
Не совсем правильное сравнение. На таких коротких строках и в таком тесте разницы практически не будет.
Вот если бы сравнивалась строка хотя бы около 10К с парой сотен переменных внутри, и соответственно с таким же количеством конкатенации. то интерполяция будет быстрее всегда и тем быстрее чем больше переменных внутри и чем более большая строка
 

Olga93

Новичок
Пытаюсь сохранить картинки в папку. Использовала несколько способов через file_put_contents и CURL. Через CURL сохраняет только файл картинки самой нет, наверное какое-то ограничение установлено на сервере(на некоторых сайтах все же можно выгрузить картинки через CURL). File_put_contents работает почти всегда и может получить и сохранить любую картинку (хотя я проверяла не так уж много сайтов, поэтому могу ошибаться).

Так вот проблема заключается в том, что через file_put_contents процесс выгрузки происходит не полностью, т.е. мне не получается забрать все изображение их там около 50 (только ЧАСТЬ). В сумме я выгружаю где-то мегабайт. Я уже перепробовала несколько способов, добавляя usleep чтобы сделать задержку перед выгрузкой каждого изображения. Код выгрузки выглядит вот так.
PHP:
function upload($small2,$big2,$pkey,$key)
{
  //Чтобы имя изображения было уникальным
  $small = "s_".($pkey+1).($key+1).mt_rand(10000, 99999).time().".jpg";
  $big = "b_".($pkey+1).($key+1).mt_rand(10000, 99999).time().".jpg";

  $small1 = './images2/'.$small;
  $big1 = './images2/'.$big;



  $context = array(
    'http' => array(
        'user_agent' => 'Mozilla/5.0 (Windows NT 6.0; rv:16.0) Gecko/20100101 Firefox/16.0'
      )
  );

  usleep(200);
  file_put_contents($small1, file_get_contents($small2,false,stream_context_create($context)));
  usleep(200);
  file_put_contents($big1, file_get_contents($big2,false,stream_context_create($context)));
}
А вот моя попытка через CURL (тут сохраняется сам файл но картинки нет).
PHP:
function save($img,$path)
{
    $src = $img;
  
  
  
    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';           
    $headers[] = 'Connection: Keep-Alive';       
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
  
    $ch = curl_init($src);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);


    curl_setopt($ch, CURLOPT_TIMEOUT, 500);
    curl_setopt($ch, CURLOPT_AUTOREFERER, false);
    curl_setopt($ch, CURLOPT_REFERER, "http://google.com");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

    $raw=curl_exec($ch);
    if ($raw === false) {
        trigger_error(curl_error($ch));
    }

    curl_close ($ch);
    $localName = $path;
    if(file_exists($localName)){ 
        unlink($localName);
    }

    $fp = fopen($localName,'wb');
    fwrite($fp, $raw);
    fclose($fp);
}
Я не знаю может я что-то еще упускаю, что препятствует мне получить все картинки в папку.
Цикл пример:
PHP:
<?php foreach($out as $pkey=>$row): ?>
    <table border="1" cellspacing="0">
        <tr>
            <td>
                <h3><?=$row['title']?></h3>
            </td>
        </tr>
        <tr>
            <td><?=$row['text']?></td>
        </tr>
        <tr>
            <td>
                <table>
                    <tr>
                    <?php
                    $tmp1 = [];
                  
                  
                    foreach($row['photos'] as $key=>$photo): ?>
                        <td>
                          <?php
                          $tmp1['photos'][] = "<a target=\"_blank\" href=\"".$photo['big']."\"><img src=\"".$photo['small']."\"/></a>";
                         //Сохранение изображений
                         upload($photo['small'],$photo['big'],$pkey,$key);
                          ?>
                        
                            <a target="_blank" href="<?=$photo['big']?>">
                                <img src="<?=$photo['small']?>"/>
                            </a>
                        </td>
                    <?php endforeach;
                    $img = implode(',', $tmp1['photos']);
                    //
                  
                    if(empty($img))
                    {
                      $img = "";
                    }
                  
                    ?>
                  
                  
                  
                    </tr>
                </table>
            </td>
        </tr>
    </table>
 

Тугай

Новичок
@Olga93, через сurl, пробуй CURLOPT_FILE

Код:
function download_url($url, $file, $proxy = '')
{
    $ch = curl_init();
    $fp = fopen($file, "w");
    if ($fp) {
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB6");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        if (!empty($proxy))
            curl_setopt($ch, CURLOPT_PROXY, $proxy);

        curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        fclose($fp);

        return $http_code;
    }

    return false;
}
 
Сверху