Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #15913

Re: Fast PHP way to find a file given the leftmost characters of the file name

Path csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail
From Matthew Carter <m@ahungry.com>
Newsgroups comp.lang.php
Subject Re: Fast PHP way to find a file given the leftmost characters of the file name
Date Sat, 05 Dec 2015 14:45:58 -0500
Organization Ahungry (http://ahungry.com)
Lines 50
Message-ID <87egf0k7bd.fsf@ahungry.com> (permalink)
References <n3v7c9$ko9$1@dont-email.me> <n3vbbr$4eh$1@speranza.aioe.org>
Mime-Version 1.0
Content-Type text/plain
Injection-Info mx02.eternal-september.org; posting-host="7c986cd4736462de309a749b207746fe"; logging-data="19613"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+APRdAgPVVOAkGLPYO2fiz"
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Cancel-Lock sha1:5qkQifcWJjFdiWjTPE9LOIvM/oM= sha1:sAFZH4dUOiWFyNSMPvcxCRXFLHY=
Xref csiph.com comp.lang.php:15913

Show key headers only | View raw


Markus Heinz <markus.heinz@uni-dortmund.de> writes:

> Hello.
>
> On 2015-12-05 at 18:39 James Harris wrote:
>> Basic query: What is the best way in PHP to find a file given just the
>> leftmost characters of its name? I am looking for something that will
>> scale so that it can be expected to execute quickly even if there are
>> thousands of files in a given directory.
> [...]
>> Any comments? Even if you think the idea is a bad one I would appreciate
>> the feedback.
>
> The glob function might be helpful to accomplish your goal:
> <http://de2.php.net/manual/en/function.glob.php>
>
> Another alternative might be to store the full filenames in a database
> table and then do a SQL query like the following:
>
> SELECT filename FROM files WHERE filename LIKE 'prefix%'
>
> In this query "prefix" is the prefix which is being searched for and
> the query will return all complete filenames matching this prefix.
>
> Which solution scales better should be examined in a setup like the
> target environment and is influenced by parameters such as number of
> files, filesystem type, available RAM, CPU speed etc.
>
>> James
>
> Regards
>
> Markus
>

FWIW, I just tested in a directory with 50,000 files on a system with
1.5G RAM (and non-SD disk) and was able to get 190 matches when
specifying the first 2 letters in 0.103 seconds using
glob($letters.'*'), as well as similar results when specifying all the
way to a single unique name.

So, I would stick with glob vs attempting to over-engineer it (if you
are working with real files and not just database content), as the only
reason to micro-optimize would be if you had extremely high traffic (in
which case I think you could afford the $20 or less a month to just get
an SD Linode, where the cost of disk I/O is almost non-existent).

-- 
Matthew Carter (m@ahungry.com)
http://ahungry.com

Back to comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Fast PHP way to find a file given the leftmost characters of the file name James Harris <james.harris.1@gmail.com> - 2015-12-05 17:39 +0000
  Re: Fast PHP way to find a file given the leftmost characters of the file name Arno Welzel <usenet@arnowelzel.de> - 2015-12-05 19:37 +0100
  Re: Fast PHP way to find a file given the leftmost characters of the file name Markus Heinz <markus.heinz@uni-dortmund.de> - 2015-12-05 19:45 +0100
    Re: Fast PHP way to find a file given the leftmost characters of the file name Matthew Carter <m@ahungry.com> - 2015-12-05 14:45 -0500
      Re: Fast PHP way to find a file given the leftmost characters of the file name Jerry Stuckle <jstucklex@attglobal.net> - 2015-12-05 15:53 -0500
      Re: Fast PHP way to find a file given the leftmost characters of the file name James Harris <james.harris.1@gmail.com> - 2015-12-06 00:50 +0000
        Re: Fast PHP way to find a file given the leftmost characters of the file name Matthew Carter <m@ahungry.com> - 2015-12-07 00:17 -0500
          Re: Fast PHP way to find a file given the leftmost characters of the file name James Harris <james.harris.1@gmail.com> - 2015-12-08 11:45 +0000

csiph-web