• Как массово обновить строки, не вызывая 200 тыщ запросов?

    orlov0562
    @orlov0562
    jazzus, ORDER BY в конце должен быть, вот так попробуй
    DB ::update('UPDATE projects DESC, (select @cnt:=0) as cnt SET rank=(@cnt:=@cnt+1) ORDER BY lift_at');
    Написано
  • HTML Page Builder генерирует невыносимую боль. Неужели это не влияет на SEO?

    orlov0562
    @orlov0562
    lagudal,

    Трафик из рекламных сетей, на выдачу никак не повлияет, там будет работать только конверт: т.е. "рекламный бюджет", будет давать X посетителей, которые должны быть конвертированы в Y денег. Как только рекламный бюджет будет = 0, то и посетителей будет столько же. Есть оооочень призрачный шанс, что как-то учитываются поведенческие факторы и влияют на ранжирование в органике, но я в это не верю.

    На топ в органике, ключевик из AdWords влиять не будет. Т.е. оргаинку надо двигать отдельно. Работают всё теже старые темы, но теперь с большой осторожностью. Т.е. как пихались ключевики на страницу, так точно так же и пихаются, только внутрь проработанной статьи. Как покупались ссылки, так и покупаются, но только с крупных площадок. Как пример, я недавно смотрел один MFA сайт конкурента и просто обалдел от того, что у него есть бэклинки не только из википедии (в которую можно заказать статью на отсутствующую или не освещенную тему и невзначай сослаться на свой сайт), но и из New York Times и The Guardian, причем из реальных статей. Я не знаю сколько это стоит, но полагаю что не дешево. Как результат, всех трусит туда-сюда, а он сидит в топе.

    Но вопрос остается - каким образом они в абсолютном топе, по реально важному ВЧ запросу "etiketten" - при том что ниша весьма конкурентная в немецкоязычных странах?

    Совокупность всего, у них домену 21 год и 112 тыс бэклинков, включая трастовые площадки типа wiki или office.com. Да и сам сайт норм, все есть что надо.

    Заголовок h1 один на страницу

    Это лишь общие рекомендации, давно не актуальные. HTML5 давно разрешает более 1го h1 на страницу, гуглу на это пофиг (пруфлинк)

    В общем, я о чем: мыслишь конечно ты правильно, надо все вылизать, оптимизировать и т.д. Но, для бизнеса, лучше сделать 10-ок лендингов быстро, запустить на них целевой траф и получать бабосики. Чем тратить время на оптимизацию, которая в итоге ни на что не повлияет. Если бы у тебя была цель оптимизировать существующие страницы, то да, там надо делать именно все то, о чем ты пишешь - оптимизация кода, текстов, внедрение всяких фишек, типа amp-а, но сейчас у вас цель сделать побольше посадочных страниц, и генераторы тут самое оно - тк раз-два и в продакшн...
    Написано
  • Как массово обновить строки, не вызывая 200 тыщ запросов?

    orlov0562
    @orlov0562
    jazzus,
    если я правильно понимаю, то тут ты каждой следующей записи делаешь rank+1
    ->map(function ($item, $index) {
                   $item['rank'] = $index + 1;
                    return $item->update(['rank']);
                    });

    если это то, что тебе надо, просто выполни вот такой запрос
    UPDATE projects, (select @cnt:=0) as cnt SET rank=(@cnt:=@cnt+1)

    или
    DB ::update('UPDATE projects, (select @cnt:=0) as cnt SET rank=(@cnt:=@cnt+1)');
    Написано
  • Парсер Яндекса. Что не так?

    orlov0562
    @orlov0562 Куратор тега PHP
    FanatPHP, переход к Яндекс.XML будет следующим этапом :)
    Написано
  • Парсер Яндекса. Что не так?

    orlov0562
    @orlov0562 Куратор тега PHP
    magogo, там же страница усеяна примерами

    use HeadlessChromium\BrowserFactory;
    $browserFactory = new BrowserFactory();
    $browser = $browserFactory->createBrowser();
    $page = $browser->createPage();
    
    // переход на страницу
    $page->navigate('https://yandex.ru/search/?text=hello+world')->waitForNavigation();
    
    // получение сгенерированного html
    $evaluation = $page->evaluate('document.body.innerText');
    $html = $evaluation->getReturnValue();
        
    // сохранение скриншота, если надо
    $page->screenshot()->saveToFile('hello-world.png');
        
    $browser->close();


    а дальше как обычно, парсинг html, чем-нибудь типа DiDOM

    P.S. Вообще, там можно выполнять произвольный JS в браузере, так что парсить можно прямо в там же и в PHP отдавать уже готовые данные, а не html. Но, тут уж все зависит от того, что ты там именно парсишь.. В общем, смотри примеры, там все есть..
    Написано
  • Как запустить pm2 при старте компа?

    orlov0562
    @orlov0562
    попробуй так
    pm2 start index.js
    pm2 save
    pm2 startup upstart
    # and run the script generated in the previous code under sudo
  • Почему yii2 на js ajax запрос выдает статус - минус?

    orlov0562
    @orlov0562
    AlexAll, так а зачем отключать, добавь его в ajax запрос
    \yii::$app->request->csrfParam => \yii::$app->request->csrfToken


    или хотя бы не на весь контроллер
    public function beforeAction($action) {
            $this->enableCsrfValidation = ($action->id !== "delete-image");
            return parent::beforeAction($action);
        }
  • Почему yii2 на js ajax запрос выдает статус - минус?

    orlov0562
    @orlov0562
    потому что я фильтр поставил чтобы это действие только по Post запросу отрабатывалось


    так почему тогда:
    если просто в браузер эту ссылку ввести /item/delete-image?id=id удаление работает

    ???
  • Где арендовать толкового спеца по-безопасности для CMF?

    orlov0562
    @orlov0562
    dreamerz, ахаха, ну ты и дыру нашел... по твоей логике на всех сайтах с базами данных, есть возможность выполнить DROP DATABASE, т.к. существует такая команда?
  • Какие паттерны gof используются для геймдева?

    orlov0562
    @orlov0562
    Максим Тимофеев, в моем ответе написано, что по ссылке "название популярных паттернов", т.е. там просто хорошо оформленный список популярных паттернов. Кроме того там есть UML диаграммы. Язык реализации дело 10е - по названию гуглится реализация на любом языке за пару минут.
  • Как сделать onload для всех страниц сайта?

    orlov0562
    @orlov0562
    rinaz22, я за другую заглушку подумал, по типу "Сайт временно не доступен, приходите позже".

    Твое решение будет выглядеть так
    script.js
    let body = document.getElementsByTagName('body')[0];
    let stub = document.createElement('div');
    stub.innerHTML = 'Загрузка..';
    stub.style.position = 'fixed';
    stub.style.width = '100%';
    stub.style.height = '100%';
    stub.style.top = 0;
    stub.style.left = 0;
    stub.style.backgroundColor = "black";
    stub.style.color = "white";
    body.appendChild(stub);
    document.addEventListener('DOMContentLoaded', ()=>{ 
        stub.style.display = 'none';
    }, false);

    во все html в body надо добавить
    ...
    <body>
    <script src="script.js">
    ...


    Вот все в одном файле для теста + setTimeout, чтобы имитировать загрузку
    <!doctype html>
    <html>
        <body>
            <script>
                let body = document.getElementsByTagName('body')[0];
                let stub = document.createElement('div');
                stub.innerHTML = 'Загрузка..';
                stub.style.position = 'fixed';
                stub.style.width = '100%';
                stub.style.height = '100%';
                stub.style.top = 0;
                stub.style.left = 0;
                stub.style.backgroundColor = "black";
                stub.style.color = "white";
                body.appendChild(stub);
                document.addEventListener('DOMContentLoaded', ()=>{ 
                    setTimeout(()=>{
                        stub.style.display = 'none';
                    }, 1000);
                }, false);            
            </script>
            <p>Контент сайта</p>
        </body>
    </html>


  • Как сделать onload для всех страниц сайта?

    orlov0562
    @orlov0562
    stub.html - файл заглушка, который будет отображаться при любых запросах. Т.е. например у тебя есть такие файлы:
    - index.html
    - about.html
    - contact.html
    - stub.html

    если ты добавишь туда файл .htaccess с содержимым указанным выше, то при запросах к любому url:
    - site.com/index.html
    - site.com/about.html
    - site.com/contact.html
    - site.com/stub.html

    у тебя будет отображаться stub.html
  • Как правильно писать условие с числом?

    orlov0562
    @orlov0562 Куратор тега PHP
    kamisarlapsha,
    1) обратная запись служит во избежания ошибок присваивания, т.е. хотел написать a == 1, а написал a=1. Числу нельзя выполнить присваивание, поэтому при 1 = a возникнет ошибка.

    2) intval - выполняет приведение значения к числу, поэтому не возникнет проблем со сравнением в случае, если там будет строка.

    Единственная проблема, будет в таком случае
    $a = [1];
    var_dump (1 == intval($a));
  • Как сделать примерную схему бд?

    orlov0562
    @orlov0562
    да все верно, при создании таблицы teacher_class надо будет создать уникальный индекс (или первичный) по полям class_id+teacher_id во избежание дублей
  • Как сделать onload для всех страниц сайта?

    orlov0562
    @orlov0562
    1. Создай скрипт script.js с таким содержимым
    let body = document.getElementsByTagName('body')[0];
    body.style.display = 'none';
    document.addEventListener('DOMContentLoaded', function(){ 
        body.innerHTML = 'заглушка';
        body.style.display = 'block';
    }, false);


    2. в html файлы помести его в секции head
    ..
    <head>
    ...
    <script src="script.js"></script>
    </head>
  • Как устранить ошибку: "count(): Parameter must be an array or an object that implements Countable"?

    orlov0562
    @orlov0562
    Анатолий, так я тебя тоже не оскорбляю, а отвечаю на вопрос "Смысл смены темы, если я ее с нуля пишу?". В той ветке, что ты указал выше написано, что проблема возникает когда используют сторонние плагины.

    Ошибка для count(null) введена с версии php 7.2. И думаю, что если ты поставишь у себя тему по-умолчанию, проблемы не будет.

    В общем, я это все пишу к тому, что это не проблема WP, а это косяк сторонних дополнений/тем. И в частности, в твоем случае не надо ждать патч, а надо сделать так, чтобы не было count(null) - это и решит проблему.
  • Как устранить ошибку: "count(): Parameter must be an array or an object that implements Countable"?

    orlov0562
    @orlov0562
    Анатолий, во-первых, я не Ванга, чтобы понять что ты только пишешь тему. Во-вторых, даже с учетом этого и приведенных тобой ссылок: если в теме по-умолчанию нет этой проблемы, значит косяк именно у тебя. В частности, в WP 5.0.3, теме по-умолчанию и PHP 7.3.1 у меня такой проблемы нет.