За последние 24 часа нас посетили 16518 программистов и 1678 роботов. Сейчас ищут 885 программистов ...

Не создаёт файл больше 100кб

Тема в разделе "Прочие вопросы по PHP", создана пользователем rustrek, 23 апр 2014.

  1. rustrek

    rustrek Активный пользователь

    С нами с:
    17 дек 2012
    Сообщения:
    23
    Симпатии:
    0
    Всем привет.

    У меня вот такая беда, парсер вытаскивает результаты матчей со спортивного сайта. Всё работает вроде бы нормально, результат записывается в файл, но файл больше 100кб не создается.

    В php.ini
    post_max_size = 30M
    upload_max_filesize = 30M

    nginx.conf
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_buffer_size 4k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

    то-есть вроде-бы всё ок.

    вот сама функция

    Код (Text):
    1. function get_web_page( $url, $bot )
    2. {
    3.  
    4.       $uagent = array(
    5.         "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)",
    6.         "Mozilla/5.0 (compatible; Mail.RU/2.0)",
    7.         "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
    8.         "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)",
    9.         "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
    10.         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"
    11.       );
    12.  
    13.         $ch = curl_init( $url );
    14.  
    15.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    16.         curl_setopt($ch, CURLOPT_HEADER, 0);
    17.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    18.         curl_setopt($ch, CURLOPT_ENCODING, "");
    19.         curl_setopt($ch, CURLOPT_USERAGENT, $uagent[$bot]);
    20.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
    21.         curl_setopt($ch, CURLOPT_TIMEOUT, 120);  
    22.         curl_setopt($ch, CURLOPT_MAXREDIRS, 50);
    23.        
    24.         $content = curl_exec( $ch );
    25.         curl_close( $ch );
    26.         return $content;
    27. }
    Ребята может кто подскажет, что за байда, как разрешить создание файлов более 100кб. я уже всю голову себе сломал блин.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    У тебя такое дело и на хостинге и на локалке?
     
  3. rustrek

    rustrek Активный пользователь

    С нами с:
    17 дек 2012
    Сообщения:
    23
    Симпатии:
    0
    Тестирую только на сервере, на локалке не пробовал

    вот сам класс

    Код (Text):
    1.  
    2. <?php
    3.  
    4. if( ! class_exists( 'NEWSRBK_API' ) )
    5. {
    6.     class NEWSRBK_API
    7.     {
    8.         var $result = false;
    9.         var $cache_dir = false;    
    10.         var $cache_files = array();
    11.  
    12.         function NEWSRBK_API()
    13.         {
    14.             if (!$this->cache_dir)
    15.             {
    16.                 $this->cache_dir = $_SERVER['DOCUMENT_ROOT']."/cache/service/";
    17.             }
    18.             return true;
    19.         }
    20.  
    21.         function save_to_cache ($fname, $vars)
    22.         {
    23.             $filename = $fname.".tmp";
    24.             $f = @fopen($this->cache_dir.$filename, "w+");
    25.             @chmod('0777', $this->cache_dir.$filename);
    26.             if (is_array($vars)) $vars = serialize($vars);
    27.             @fwrite($f, $vars);
    28.             @fclose($f);
    29.             return $vars;
    30.         }
    31.            
    32.         function load_from_cache ($fname, $timeout=300, $type = 'text')
    33.         {
    34.             $filename = $fname.".tmp";
    35.             if (!file_exists($this->cache_dir.$filename)) return false;
    36.             if ((filemtime($this->cache_dir.$filename)) < (time()-$timeout)) return false;
    37.  
    38.             if ($type=='text')
    39.             {
    40.                 return file_get_contents($this->cache_dir.$filename);
    41.             }
    42.             else
    43.             {
    44.                 return unserialize(file_get_contents($this->cache_dir.$filename));
    45.             }
    46.         }          
    47.                
    48.         function clean_cache($name = "GLOBAL")
    49.         {
    50.             $this->get_cached_files();
    51.            
    52.             if ($name=="GLOBAL")
    53.             {
    54.                 foreach ($this->cache_files as $cached_file)
    55.                 {
    56.                     @unlink($this->cache_dir.$cached_file);
    57.                 }
    58.             }
    59.             elseif (in_array($name.".tmp", $this->cache_files))
    60.             {
    61.                 @unlink($this->cache_dir.$name.".tmp");
    62.             }
    63.         }
    64.        
    65.         function get_cached_files()
    66.         {
    67.             $handle = opendir($this->cache_dir);
    68.             while (($file = readdir($handle)) !== false)
    69.             {
    70.                 if ($file != '.' && $file != '..' && (!is_dir($this->cache_dir.$file) && $file !='.htaccess'))
    71.                 {
    72.                     $this->cache_files [] = $file;
    73.                 }
    74.             }
    75.             closedir($handle);
    76.         }      
    77.  
    78.         }
    79.         }
    80.  
    81.     $newsrbk_api = new NEWSRBK_API ();
    82.     if( ! isset( $result ) ) {
    83.         include_once ($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');
    84.  
    85.     }
    86.     $newsrbk_api->result = $result;
    87. ?>
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А вы попробуйте...
     
  5. rustrek

    rustrek Активный пользователь

    С нами с:
    17 дек 2012
    Сообщения:
    23
    Симпатии:
    0
    блин звиздец решение очень простое ini_set('pcre.backtrack_limit', 150000);

    всем спасибо
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Эм....

    А можно описать, каким именно образом это могло помочь? О_о
     
  7. rustrek

    rustrek Активный пользователь

    С нами с:
    17 дек 2012
    Сообщения:
    23
    Симпатии:
    0
    можно конечно, но оказывается всё очень просто

    pcre.backtrack_limit - Лимит обратных ссылок PCRE.

    Добавлено спустя 37 секунд:
    вот, что получилось http://newsrbk.ru/allsports/1/