Ответы пользователя по тегу PHP
  • libvirt через web

    FreeTibet
    @FreeTibet
    dharma supplier
    К сожалению, с libvirt не знаком. Но решал эту задачу для xen и vmware через родное api. Для libvirt существует куча биндингов: libvirt.org/bindings.html — там есть и php, и perl. Что мешает использовать их?
    Ответ написан
  • [closed]Вставка 1 000 000 уникальных случайных значений

    FreeTibet
    @FreeTibet
    dharma supplier
    Если взять только нижний регистр, то получается 33^4 = 1185921
    Я бы сгенерировать все варианты, и рандомом поудалял лишние, до 1000000.
    А если нужнен и верхний, то прошелся по полученной выборке и тоже рандомом сделал бы преобразование в верхний. И никаких проверок на уникальность не надо.

    Но вообще не понятно, зачем вам это писать на php, я бы сделал бы прямо на mysql:

    хранимка:
    BEGIN
    SET @str = 'абвгдежзийклмнопрстуфхцчшщъыьэюя';

    SET @a = 1;

    WHILE @a < 33 DO
    SET @b = 1;
    WHILE @b < 33 DO
    SET @c = 1;
    WHILE @c < 33 DO
    SET @d = 1;
    WHILE @d < 33 DO
    -- тут можно добавить случайное преобразование в верхний регистр
    INSERT INTO test (word) VALUES(concat(
    substr(@str, @a, 1),
    substr(@str, @b, 1),
    substr(@str, @c, 1),
    substr(@str, @d, 1)));

    SET @d = @d + 1;
    END WHILE;
    SET @c = @c + 1;
    END WHILE;
    SET @b = @b + 1;
    END WHILE;
    SET @a = @a + 1;
    END WHILE;



    Но вообще тоже не быстро. Может быть имеет смысл генерировать динамический sql и вставлять пакетами.

    ну а дальше остаётся только удалить лишние:

    DELETE t FROM test AS t
    INNER JOIN (
    SELECT word FROM test
    ORDER BY RAND()
    LIMIT 0, 48576
    ) AS q
    ON q.word = t.word;
    Ответ написан