postavkin

Рейтинг
601
Регистрация
06.01.2009
htexture #:

Вам необходимо, чтобы это на хостинге работало? Или это база, и ее надо залить на хостинг? Если нет, может поставить денвер, и на локальной машине провернуть операцию. Там нету лимитов, хоть ставьте всю память своей машины.

http://www.denwer.ru/

мне надо переработать файл. разово.

денвер- поищу что такое.спасибо

webinfo #:

Читайте через fgets():
https://www.php.net/manual/ru/function.fgets.php

Спасибо. Попробовал. Не, хватает на 10 тыс строк


$cvcvcvcv=0;    
$filesotbor = fopen($fajl2,'w');//открываем файл в режиме записи данных // заодно УДАЛЯЕТ СОДЕРЖИМОЕ ФАЙЛА

$handle = @fopen("file/iqcbhqelxh.csv", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
       // echo $buffer;
                $cvcvcvcv++;
                                if ($cvcvcvcv == 100 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 1000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 10000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 100000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 300000 ) {echo "<br>обработано $cvcvcvcv";}
                                $vbzx = array();
                                $stroka = $buffer;

                                
                                $vbzx = explode('"', $stroka);
                                        $url = $vbzx[1];
                                        //echo "<br>$url";
                                
                                if (in_array("$url", $urlmass)) {
                                        //echo "Нашёл $url<br>";
                                } else {
                                        //echo "Нету $url добавим<br>";
                                        $urlmass[] = $url;
                                        $newmass[] = $stroka;
                                        $stroka = trim($stroka, "\n");
                                        $e = "$stroka\n";
                                        fwrite($filesotbor,$e);
                                }
                
                
    }
    if (!feof($handle)) {
        echo "Ошибка: fgets() неожиданно потерпел неудачу\n";
    }
    fclose($handle);
        fclose($filesotbor);//закрываем файл
}
webinfo #:

Читайте через fgets():
https://www.php.net/manual/ru/function.fgets.php

о, интересно.  Это похоже построчное чтение файла... или я не верно понял
LEOnidUKG #:

Делите файл или действительно через mysql пробуйте как-нибудь.

Вообще на локалке это провернуть бы, да и всё.

Разделив файл я не понимаю, как можно оставить уник для всего файла. Уник то можно будет оставить только для "кусков". Конечно можно их потом объеденить и ещё раз уникализировать....

А как на локалке, чем?

База ругается. Началось неплохо. По 500-700 тыс строк добавлялось. Сейчас уже 7я итерация. Ставлю пропустить sql запросов  2470042  и добавляет в базу всего 100 тыс срок...

Dram #:

В начале скрипта или еще больше, если ошибка не пропадает и хостинг позволяет

1р 1Мб, 1р 1сек. Увеличить то могу, за денежку, но я же не знаю на сколько нужно))

Сейчас пробую залить этот файл в базу Mysql, ругается что файл большой, ну может в 5 итераций закину...

LEOnidUKG #:

У ТС-а уже 256М выделено.

Это очень ресурсоёмкие задачи, поэтому попробуйте выделить 512М если позволяет хостинг на выполнение PHP

Но также надо смотреть код, может быть там какая-нибудь сортировка вставлена которая будет пожирать ресурсы.

                $fajl2='price-result.txt';

                $naborprices = array('file/iqcbhqelxh.csv');

                
                foreach ($naborprices as $value333) {
        
                        $fajl1=''.$value333.'';
                        $file1 = array();
                        $file1 = file($fajl1);

                        $cvcvcvcv=0;
                        foreach ($file1 as $value555) {
                                $cvcvcvcv++;
                                if ($cvcvcvcv == 100 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 1000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 10000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 100000 ) {echo "<br>обработано $cvcvcvcv";}
                                if ($cvcvcvcv == 300000 ) {echo "<br>обработано $cvcvcvcv";}
                                $vbzx = array();
                                $stroka = $value555;

                                
                                $vbzx = explode('"', $stroka);
                                        $url = $vbzx[1];
                                        //echo "<br>$url";
                                
                                if (in_array("$url", $urlmass)) {
                                        //echo "Нашёл $url<br>";
                                } else {
                                        //echo "Нету $url добавим<br>";
                                        $urlmass[] = $url;
                                        $newmass[] = $stroka;
                                }
                                
                        }
                        echo "<br>обработано";
                
                
                
                
                        $filesotbor = fopen($fajl2,'w');//открываем файл в режиме записи данных // заодно УДАЛЯЕТ СОДЕРЖИМОЕ ФАЙЛА
                        foreach ($newmass as $value) {
                                $value = trim($value, "\n");
                                $e = "$value\n";
                                fwrite($filesotbor,$e);
                        }
                        fclose($filesotbor);//закрываем файл
                
                }

В файле iqcbhqelxh.csv  3700000 строк.

Каждая строка имеет условно такой вид

"alibaba":true:true:false:"2020-11-30 12:27:49":2819:portugal


ошибка вываливается в строке где $file1 = file($fajl1);

ругается на ресурсы


Dreammaker #:

Самый простой вариант - выставить большее количество памяти для php-процесса. Способ где это прописывать зависит от того, в каком виде у вас работает php. 

Ошибка на считывании или уже при разбиении?

Ну я не разбиваю. Только пытаюсь прочитать файл целиком.

Виктор Петров #:

Но как текстовые факторы ранжирования.

Поясните, пожалуйста...

iqpi #:
Вы даже понятия не имеете о том, что представляют эти названия )))


А теперь вернёмся к вопросу про фильтр за ссылки.

Что за фильтр?

пессимизация, не?
iqpi #:

Что за фильтр?

Расскажите пожалуйста.

ну минусинск, панда
Всего: 5509