Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Удаленная работа для IT-специалистов
<?php namespace Infr; defined('PIMPORT') or die('Error access'); //класс требует подключение зандовской библиотеки require_once 'Zend' . DS . 'Http' . DS . 'Client.php'; /** * Class Request * @package Infr */ class Request extends Singleton { /** * @param $url */ public function redirect($url) { header('Location: ' . $url); exit(); } /** * @static * @param $URL * @param int $time * @param array $params * @param string $method * @param bool $URL2 * @return bool|string */ public static function httpRequestCache($URL, $time = 900, $params = array(), $method = 'get', $URL2 = false) { $cacheFileName = md5($URL . $URL2); $cacheFilePath = DIR_ROOT . DS . 'tmp' . DS . 'files' . DS . $cacheFileName; if (file_exists($cacheFilePath)) { $fileModTime = filemtime($cacheFilePath); if ($fileModTime > (time() - $time)) { return file_get_contents($cacheFilePath); } } $cacheContent = self::httpRequest($URL, $params, $method, $URL2); if ($cacheContent !== false) { file_put_contents($cacheFilePath, $cacheContent); } return $cacheContent; } /** * Запрос к серверу * @param $URL * @param array $params * @param string $method * @param bool $URL2 * @return bool|array|string */ public static function httpRequest($URL, $params = array(), $method = 'get', $URL2 = false) { if (!\Zend_Uri::check($URL)) { return false; } $logObject = new Log('requests'); $config = array( 'maxredirects' => 5, 'strictredirects' => false, 'timeout' => 150, 'adapter' => 'Zend_Http_Client_Adapter_Socket' ); $client = new \Zend_Http_Client($URL, $config); $client->setHeaders('User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'); $client->resetParameters(); $client->setCookieJar(); if ($method == 'get') { $client->setMethod(\Zend_Http_Client::GET); $client->setParameterGet($params); } else { $client->setMethod(\Zend_Http_Client::POST); $client->setParameterPost($params); } try { $client->request(); } catch (\Exception $e) { echo $e->getMessage(); $logObject->write('Не удалось загрузить ' . $URL); } if ($URL2) { if (is_array($URL2)) { $responses = array(); foreach ($URL2 as $key => $subUrl) { if (!\Zend_Uri::check($subUrl)) { continue; } $client->resetParameters(); $client->setMethod(\Zend_Http_Client::GET); $client->setUri($subUrl); try { $client->request(); } catch (\Exception $e) { $logObject->write('Не удалось загрузить ' . $subUrl); } $response = $client->getLastResponse(); if (!$response || !is_object($response)) { continue; } if (preg_match('|^40|', $response->getStatus())) { $logObject->write('ERROR(' . $response->getStatus() . '): ' . $URL); continue; } $responses[$key] = $response->getBody(); } return $responses; } else { if (!\Zend_Uri::check($URL2)) { return false; } $client->resetParameters(); $client->setMethod(\Zend_Http_Client::GET); $client->setUri($URL2); try { $client->request(); } catch (\Exception $e) { $logObject->write('Не удалось загрузить ' . $URL2); } } } $response = $client->getLastResponse(); if (!$response || !is_object($response)) { return false; } if (preg_match('|^40|', $response->getStatus())) { $logObject->write('ERROR(' . $response->getStatus() . '): ' . $URL); return false; } return $response->getBody(); } }
вот что там