Dram

Рейтинг
1115
Регистрация
28.06.2008
Dram:
Разместился на ЕДУ, все согласно ТЗ, Быстро и качественно - рекомендую к сотрудничеству!

Прошло 10 дней, половина ссылок появилась в вебмастере. Из того что делал я - зашел с мобильника из браузера Хром по каждой ссылке, а с нее на свой сайт, больше ничего.

png 186651.png

Проблема была у меня - не перевел запросы на ключ.

ivan-lev, большое спасибо, снова выручили!

Серьезно - 9000 посещалки и 12500 при этом на сервер? У меня в лучшие времена впс за 10 евро держал 120.000 в сутки и нагружен был на 50%!

Ищите толкового программиста, чтобы перелопатил код вашего движка. Это не нормально столько тратить при такой посещаемости.

Могу Леню посоветовать, вроде он как раз аудитом и занимается, толковый кодер /ru/users/25171

infant, большое спасибо!

infant, спс, отправил в личку.

У проблемного файла размер всего 3,5 мб. А на серваке в данный моменты свободно 5 гб оперативы и мунин не показывает что идет како-то рост потребления ресурсов когда виснет все.

ivan-lev, попробовал получить инфу о файле, тоже зависло на этом

$pdf = $parser->parseFile('https://urlfirm/get_file.php?id='.$idOtchet[0][1].'&name=file.pdf');
$details = $pdf->getDetails();
var_dump($details);



---------- Добавлено 15.09.2019 в 12:56 ----------

Так тоже висит

$details = $pdf->getDetails();

// Loop over each property to extract values (string or array).
foreach ($details as $property => $value) {
if (is_array($value)) {
$value = implode(', ', $value);
}
echo $property . ' => ' . $value . "\n";
}

ivan-lev, а как называется этот стиль замены IF? - хочу почитать/посмотреть примеры с ним

ivan-lev:
У меня вообще большие сомнения, что он Вам именно в таком формате нужен.. =)



$newItems= [];
foreach ($bigmassive as $item) {
(isset($newItems[$item->id]) && $newItems[$item->id]->year > $item->year)
or $newItems[$item->id] = $item;
}

Люди, расскажите пожалуйста, как работает этот цикл. Я его не понимаю. При чем тут or?

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

На выходе запросы имеем массив:

array(9) {
[0]=>
object(stdClass)#19 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(4) "814"
["year"]=>
string(4) "2017"
}
[1]=>
object(stdClass)#20 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(2) "870"
["year"]=>
string(4) "2015"
}
[2]=>
object(stdClass)#21 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(4) "855"
["year"]=>
string(4) "2012"
}
[3]=>
object(stdClass)#22 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(4) "802"
["year"]=>
string(4) "2019"
}
[4]=>
object(stdClass)#23 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(2) "699"
["year"]=>
string(4) "2016"
}
[5]=>
object(stdClass)#24 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(5) "958"
["year"]=>
string(4) "2011"
}
[6]=>
object(stdClass)#25 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(4) "814"
["year"]=>
string(4) "2014"
}
[7]=>
object(stdClass)#26 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(4) "775"
["year"]=>
string(4) "2010"
}
[8]=>
object(stdClass)#27 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(5) "750"
["year"]=>
string(4) "2018"
}
}

Как мы видим, айди одной и той же фирмы, меняются только года и значения. Далее я использую следующий код:

foreach ($result as $key => $value){
if ($value->year !== '2018'){ // тут если не нужный мне год присваиваю году и валю нули
$value->year = '0';
$value->value = '0';
// unset($result[$key]);
}
$value2[] = $value;
}

//// это код ivan-lev собираем новый массив с уникальными ID без повторов.
$newItems= [];
foreach ($value2 as $item) {
(isset($newItems[$item->id]) || $newItems[$item->id]->year > $item->year)
or $newItems[$item->id] = $item;
}
var_dump($newItems);

В итоге я хочу собрать все фирмы у которых в поле валу будет либо цена (если нужный мне год, либо ноль), но получаю следующее

PHP Notice: Undefined offset: 1822 in /var/www/rate.php on line 37

Notice: Undefined offset: 1822 in /var/www/rate.php on line 37
PHP Notice: Trying to get property 'year' of non-object in /var/www/rate.php on line 37

Notice: Trying to get property 'year' of non-object in /var/www/rate.php on line 37
array(1) {
[1822]=>
object(stdClass)#19 (3) {
["id"]=>
string(4) "1822"
["value"]=>
string(1) "0"
["year"]=>
string(1) "0"
}
}

А по идее должен был получить это

{
["id"]=>
string(4) "1822"
["value"]=>
string(5) "750"
["year"]=>
string(4) "2018"
}

В чем ошибка?

P.S. (нотисы выше ругаются на строку - (isset($newItems[$item->id]) || $newItems[$item->id]->year > $item->year))

---------- Добавлено 13.09.2019 в 14:20 ----------

Так одну проблему решил

Надо было так

($newItems[$item->id]->year > $item->year)

Теперь получаю массив фирм с ценами за нужных год, но они не отсортированы по убыванию

Изначально в

foreach ($result as $key => $value){

массив $result пришел отсортированный ORDER BY `t3`.`value` DESC

но где то потом сортировка сбилась...

где она могла слететь или по другому - как опять массив по value сортирнуть?

---------- Добавлено 13.09.2019 в 14:30 ----------

проблему окончательно решил так

function cmp_function_desc($a, $b){
return ($a->value < $b->value);
}
uasort($items, 'cmp_function_desc');
Всего: 6928