2014-01-02 3 views
0

Не уверен, что это возможно только с помощью php или если мне тоже понадобится что-то другое. В основном я хотел бы иметь массив с кучей записей, таких как:Можно вывести случайную запись из массива и сохранить расписание?

(1234,5432,5678,5899,3245)

И я хотел бы иметь PHP случайным образом выбрать одну запись из массива AND придерживаться той записи, которую он выбрал в течение 3 дней. Так, например, на определенную дату он вытащил бы «5432» из массива, затем он удерживал эту запись в течение 3 дней, затем через 3 дня она выбрала бы другую запись и удерживала ее в течение 3 дней и т. Д.

Любые идеи, как это можно сделать? Можно ли это сделать только с помощью php? Большое спасибо за любую помощь.

+1

Вы пробовали код? –

+0

PHP не особенно устойчив. Как вы планируете «поддерживать» значение дольше, чем продолжительность скрипта, т. Е. 3 дня? – zamnuts

+0

Вам понадобится скрипт php, который собирает массив, выбирает элемент и сохраняет его. Вам также понадобится постоянный магазин. В большинстве базовых реализаций вы можете использовать 'array_rand' для выбора случайного элемента, затем сохранить этот элемент (или ключ к этому элементу) в текстовом файле с помощью' fopen' и 'fwrite'. Любой скрипт, который требует, чтобы случайный элемент читал текстовый файл, который вы пишете, чтобы получить данные. Затем вы создавали crontab для выполнения скрипта php «get random element» каждые 3 дня, чтобы обновить сохраненный/кэшированный элемент. (конечно, это очень простой способ сделать это) – Lee

ответ

0

Предполагая, что вы используете PHP-программу (командную строку) и не запускаете скрипт на веб-сервере, вы можете запустить этот скрипт, чтобы оставаться на все время и ждать, чтобы сделать.

$entries = array(34534, 435, 345); 

while(1) { 

    // subtract 1 from total number of entries because arrays start at an index of 0. 
    $totalNumberOfEntries = sizeof($entries) - 1; 

    // if no entries left, quit the program 
    if ($totalNumberOfEntries <= 0) break; 

    // grab a random index from your array using `mt_rand()` function 
    $entry = $entries[ mt_rand(0, $totalNumberOfEntries - 1) ]; 

    // write the entry to a file 
    file_put_contents('entry.txt', $entry, FILE_APPEND); 

    // wait 3 days to draw again 
    sleep(3600 * 24 * 3); 

} 
+0

Привет, Сэм, я действительно просто запускаю скрипт на веб-сервере. Я очень новичок в этом, большие извинения! Может ли этот код работать на веб-сервере, если я просто загружаю пустой .txt-файл и т. Д.? – user1610904

+0

Нет. Если у вас есть cPanel, вы можете настроить задание cron и вырезать цикл while и 'sleep'. Затем с сервера вы можете получить запись из базы данных или файла 'entry.txt', используя' file_get_contents ("entry.txt") ' –

+0

Это звучит идеально. У меня есть cPanel, но я честно не знаю, как настроить команду для cronjob, любой совет? Спасибо за эту полезную информацию, я попытался поднять этот ответ, но он сказал, что мой представитель должен быть выше. – user1610904

Смежные вопросы