Существует другая опция, которая можно использовать, выполнить сценарий CLI... Это будет работать в фоновом режиме, и можно даже выполнить его как cronjob, если Вы хотите.
, например,
> #!/usr/bin/php -q
<?php
//process logs
?>
Это может быть установкой как cronjob и выполнит без ограничения времени.... это, примеры для основанной на Unix операционной системы все же.
к вашему сведению у меня есть сценарий PHP, работающий с бесконечным циклом, который делает некоторую обработку и работал в течение прошлых 3 месяцев не, останавливаются.
Как найти индекс максимального элемента? Как насчет того, чтобы попробовать все индексы и проверить, являются ли они максимальными?
ghci> let maxIndex xs = head $ filter ((== maximum xs) . (xs !!)) [0..]
Но это похоже на то, для чего функция уже существует. Мой код будет более читабельным, обслуживаемым и, вероятно, даже более эффективным, если я буду использовать существующую функцию.
К вашему сведению, вы также можете спросить Hoogle , который может искать по сигнатурам типа Haskell (как предложил Уилл):
$ hoogle "Ord a => [a] -> Int" | head
<Nothing relevant>
$ # hmm, so no function to give me the index of maximum outright,
$ # but how about finding a specific element, and I give it the maximum?
$ hoogle "a -> [a] -> Int" | head
Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
Data.List elemIndices :: Eq a => a -> [a] -> [Int]
import Data.List
elemIndex 'b' "abc" === Just 1
Действительно хороший инструмент для поиска функций haskell - это Hoogle . Позволяет выполнять поиск среди прочего по сигнатуре типа.
Если вы хотите сделать все за один проход, я бы порекомендовал Data.List.mapAccumL, передав индекс самого большого числа, найденного на данный момент, в качестве аккумулятора.