|
Posted by Philip Hallstrom on 07/06/05 19:07
> Suppose I have a directory with a HUGE number of filenames, all of which
> happen to look like integers:
>
> ~/nntp/1
> ~/nntp/2
> ~/nntp/3
> .
> .
> .
> ~/nntp/59874
> ~/nntp/59875
> ~/nntp/59876
>
> Now, in a PHP script, what's the most efficient way to find the "largest"
> filename, where "largest" means in the sense of an integer, not a string?
>
> I could probably force the filenames to be 0-padded if that would make a
> significant difference.
>
> Is there some nifty shell command I should just "exec"?...
>
> I don't really care which shell, but I'm a bash user generally.
>
> Obviously I could loop through all the filenames, so I'm looking for
> something faster than that. :-)
I can't think of anything you could do in the shell that would be
faster...
Anything you do in the shell is going to involve 'ls' which is going to
have to loop through all the filenames anyway... so you might as well do
it within PHP and save yourself the exec and other processes to sort/trim
the list.
I suppose you could try some sort of hunt and peck search... say you had
some idea how many files where in there (under say 10,000). Then you
could maybe do something like checking if 5000 exists. If it does, check
7500. If it doesn't, check 6250. If it does, check 6875 and so on until
you're down to a reasonable "gap". Then just check incrementally from
there.
Whether or not that's going to be faster than just looping through them
all I don't know...
good luck!
-philip
Navigation:
[Reply to this message]
|