function cartesian(array $set): array
{
    $result = [];

    if (!$set) {
        $result[] = [];

        return $result;
    }

    $head = array_shift($set);

    $tails = cartesian($set);

    foreach ($head as $headValue) {
        foreach ($tails as $tail) {
            array_unshift($tail, $headValue);

            $result[] = $tail;
        }
    }

    return $result;
}

$set = [
    [1, 2],
    ['A', 'B'],
    ['+', '-'],
];

print_r(cartesian($set));

/*
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => A
            [2] => +
        )

    [1] => Array
        (
            [0] => 1
            [1] => A
            [2] => -
        )

    [2] => Array
        (
            [0] => 1
            [1] => B
            [2] => +
        )

    [3] => Array
        (
            [0] => 1
            [1] => B
            [2] => -
        )

    [4] => Array
        (
<?php
// @formatter:off
...
// @formatter:on

Для работы этой функциональности должна быть включена галочка Settings > Editor > Code Style > Formatter Control > Enable formatter markers in comments

Как запустить фоновый процесс?

Добавить вконце команды амперсанд:

sleep 30 &

Как сделать текущий процесс фоновым?

CTRL + Z

Как перейти в последний запущенный фоновый процесс?

fg

Как вывести список всех фоновых процессов?

jobs

Как перейти в конкретный фоновый процесс?

fg 2

Добавить в начало sql файла:

SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;

И в конец файла:

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;
COMMIT;

Увеличить в конфиге key_buffer_size до 30% доступной памяти

Выставить в конфиге innodb_flush_log_at_trx_commit = 2

Возможные значения:

window.addEventListener('beforeunload', sendRequestOnCloseTab, false);

function sendRequestOnCloseTab() {
    if (!navigator.sendBeacon) {
        return;
    }

    navigator.sendBeacon(
        '/api/method',
        JSON.stringify(
            {
                field: 'value'
            }
        )
    );
}

Отправка запроса с помощью Beacon API не ожидает ответа сервера, а поэтому не блокирует страницу.

Страницы