Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Shawn McKenzie
Kenneth Sande wrote:
> I use the glob function in my little homemade "web cam" page, which can
> really swell up in memory when used against a large amount of files (in
> my case around 30k files).

+1 for glob()


-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Bastien Koert
On Wed, Jan 13, 2010 at 10:50 AM, Rahul S. Johari
 wrote:
>
> On Jan 13, 2010, at 10:40 AM, Rahul S. Johari wrote:
>
>>
>> On Jan 13, 2010, at 9:50 AM, Warren Windvogel wrote:
>>
>>> On 2010/01/13 04:25 PM, Rahul S. Johari wrote:

 Ave,

 This is what I'm trying to do; I want to read a directory (eg: W:\Test\)
 and take all the filenames found in the directory (eg: 1.vox, 2.wav, 3.txt)
 and store them in  a simple mySQL table.

 Can I do this?
>>>
>>> I tried to very quickly convert something I've done. It may need some
>>> work. Will work in  linux env.
>>>
>>> $origin = "Path"
>>>
>>> #load file listing into an array
>>> $shell = shell_exec("du $origin");
>>> $array  = array_reverse(explode("\n",$shell));
>>> $contIdArr = array();
>>>
>>> $newArr = array();
>>> foreach($array as $elem){
>>>  $newDir = "";
>>>  $pathArray = explode("/", $elem);
>>>  $nodeDepth = count($pathArray);
>>>  for($count=1; $count<$nodeDepth; $count++){
>>>      $newDir = $newDir.$pathArray[$count].'/';
>>>  }
>>>  $newArr[] = '/'.$newDir;
>>> }
>>> sort($newArr);
>>>
>>>
>>> foreach($newArr as $dir){
>>>  $pathArray = explode("/", $dir);
>>>
>>>  $fileListArr = dirList($dir);
>>>
>>>  foreach($fileListArr as $file){
>>>      //Insert file($file) and current dir/path($dir) into db
>>>  }
>>> }
>>>
>>> Kind regards
>>> Warren
>>>
>>
>>
>> Warren,
>>
>> I tried using your code and it definitely is very efficient & fast;
>> however I'm running into a small problem and I'm not sure how to correct it.
>> I'm getting the array with filenames from the folder I'm searching in PLUS
>> all the root folders of the machine as well.
>>
>> This is the code I'm using (note that I'm just echoing the array right
>> now; I'll move to inserting data into mySQL after):
>>
>> function dirList ($directory) {
>>  $results = array();
>>  $handler = opendir($directory);
>>  while ($file = readdir($handler)) {
>>      if ($file != '.' && $file != '..')
>>          $results[] = $file;
>>  }
>>  closedir($handler);
>>  return $results;
>> }
>>
>> $origin = "/Library/WebServer/Documents/folder1/folder2/images/";
>>
>> #load file listing into an array
>> $shell = shell_exec("du $origin");
>> $array  = array_reverse(explode("\n",$shell));
>> $contIdArr = array();
>>
>> $newArr = array();
>> foreach($array as $elem){
>>  $newDir = "";
>>  $pathArray = explode("/", $elem);
>>  $nodeDepth = count($pathArray);
>>  for($count=1; $count<$nodeDepth; $count++){
>>      $newDir = $newDir.$pathArray[$count].'/';
>>  }
>>  $newArr[] = '/'.$newDir;
>> }
>> sort($newArr);
>>
>> foreach($newArr as $dir){
>>  $pathArray = explode("/", $dir);
>>  $fileListArr = dirList($dir);
>>
>>  foreach($fileListArr as $file){
>>        echo $file."";
>>      //Insert file($file) and current dir/path($dir) into db
>>  }
>> }
>>
>>
>> As an output ... i get a list of all the files in the "images" folder
>> preceeded by the all the list of root folders on my machine!! How do I
>> eliminate the list of root folders?
>
>
> Nevermind, I was looking at the wrong output. I got it!! I've got all my
> filenames in my $fileListArr[] array!!
> Now I just to get the values in a mySQL table.
>
>
> ---
> Rahul Sitaram Johari
> Founder, Internet Architects Group, Inc.
>
> [Email] sleepwal...@rahulsjohari.com
> [Web]   http://www.rahulsjohari.com
>
>
>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


consider stacking the insert statements in sql to allow for a certain
number of inserts in one connect.

insert into my_table (field1, field2...fieldn)
values('field1','field2'...fieldn),('field1','field2'...fieldn),('field1','field2'...fieldn),('field1','field2'...fieldn)...

keep to something like 100 to avoid buffer overflows and it should
make the inserts much faster

-- 

Bastien

Cat, the other other white meat

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table? :: SOLVED!!

2010-01-13 Thread Rahul S. Johari


Thanks All (Especially Warren); Final Code:

function dirList ($directory) {
   $results = array();
   $handler = opendir($directory);
   while ($file = readdir($handler)) {
   if ($file != '.' && $file != '..')
   $results[] = $file;
   }
   closedir($handler);
   return $results;
}

$origin = "pathto/images/";

#load file listing into an array
$shell = shell_exec("du $origin");
$array  = array_reverse(explode("\n",$shell));
$contIdArr = array();

$newArr = array();
foreach($array as $elem){
   $newDir = "";
   $pathArray = explode("/", $elem);
   $nodeDepth = count($pathArray);
   for($count=1; $count<$nodeDepth; $count++){
   $newDir = $newDir.$pathArray[$count].'/';
   }
   $newArr[] = '/'.$newDir;
}
sort($newArr);

foreach($newArr as $dir){
   $pathArray = explode("/", $dir);
   $fileListArr = dirList($dir);
}

$db = mysql_connect("localhost","usr","pwd");
mysql_select_db("db",$db);

foreach($fileListArr AS $value) {
$sql="INSERT INTO r2 (ID, RECORDING) VALUES('','$value')";
$result = mysql_query($sql) or die (mysql_error());
}


---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Rahul S. Johari


On Jan 13, 2010, at 10:40 AM, Rahul S. Johari wrote:



On Jan 13, 2010, at 9:50 AM, Warren Windvogel wrote:


On 2010/01/13 04:25 PM, Rahul S. Johari wrote:

Ave,

This is what I'm trying to do; I want to read a directory (eg: W: 
\Test\) and take all the filenames found in the directory (eg:  
1.vox, 2.wav, 3.txt) and store them in  a simple mySQL table.


Can I do this?
I tried to very quickly convert something I've done. It may need  
some work. Will work in  linux env.


$origin = "Path"

#load file listing into an array
$shell = shell_exec("du $origin");
$array  = array_reverse(explode("\n",$shell));
$contIdArr = array();

$newArr = array();
foreach($array as $elem){
  $newDir = "";
  $pathArray = explode("/", $elem);
  $nodeDepth = count($pathArray);
  for($count=1; $count<$nodeDepth; $count++){
  $newDir = $newDir.$pathArray[$count].'/';
  }
  $newArr[] = '/'.$newDir;
}
sort($newArr);


foreach($newArr as $dir){
  $pathArray = explode("/", $dir);

  $fileListArr = dirList($dir);

  foreach($fileListArr as $file){
  //Insert file($file) and current dir/path($dir) into db
  }
}

Kind regards
Warren




Warren,

I tried using your code and it definitely is very efficient & fast;  
however I'm running into a small problem and I'm not sure how to  
correct it. I'm getting the array with filenames from the folder I'm  
searching in PLUS all the root folders of the machine as well.


This is the code I'm using (note that I'm just echoing the array  
right now; I'll move to inserting data into mySQL after):


function dirList ($directory) {
  $results = array();
  $handler = opendir($directory);
  while ($file = readdir($handler)) {
  if ($file != '.' && $file != '..')
  $results[] = $file;
  }
  closedir($handler);
  return $results;
}

$origin = "/Library/WebServer/Documents/folder1/folder2/images/";

#load file listing into an array
$shell = shell_exec("du $origin");
$array  = array_reverse(explode("\n",$shell));
$contIdArr = array();

$newArr = array();
foreach($array as $elem){
  $newDir = "";
  $pathArray = explode("/", $elem);
  $nodeDepth = count($pathArray);
  for($count=1; $count<$nodeDepth; $count++){
  $newDir = $newDir.$pathArray[$count].'/';
  }
  $newArr[] = '/'.$newDir;
}
sort($newArr);

foreach($newArr as $dir){
  $pathArray = explode("/", $dir);
  $fileListArr = dirList($dir);

  foreach($fileListArr as $file){
echo $file."";
  //Insert file($file) and current dir/path($dir) into db
  }
}


As an output ... i get a list of all the files in the "images"  
folder preceeded by the all the list of root folders on my machine!!  
How do I eliminate the list of root folders?



Nevermind, I was looking at the wrong output. I got it!! I've got all  
my filenames in my $fileListArr[] array!!

Now I just to get the values in a mySQL table.


---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Rahul S. Johari


On Jan 13, 2010, at 9:50 AM, Warren Windvogel wrote:


On 2010/01/13 04:25 PM, Rahul S. Johari wrote:

Ave,

This is what I'm trying to do; I want to read a directory (eg: W: 
\Test\) and take all the filenames found in the directory (eg:  
1.vox, 2.wav, 3.txt) and store them in  a simple mySQL table.


Can I do this?
I tried to very quickly convert something I've done. It may need  
some work. Will work in  linux env.


$origin = "Path"

#load file listing into an array
$shell = shell_exec("du $origin");
$array  = array_reverse(explode("\n",$shell));
$contIdArr = array();

$newArr = array();
foreach($array as $elem){
   $newDir = "";
   $pathArray = explode("/", $elem);
   $nodeDepth = count($pathArray);
   for($count=1; $count<$nodeDepth; $count++){
   $newDir = $newDir.$pathArray[$count].'/';
   }
   $newArr[] = '/'.$newDir;
}
sort($newArr);


foreach($newArr as $dir){
   $pathArray = explode("/", $dir);

   $fileListArr = dirList($dir);

   foreach($fileListArr as $file){
   //Insert file($file) and current dir/path($dir) into db
   }
}

Kind regards
Warren




Warren,

I tried using your code and it definitely is very efficient & fast;  
however I'm running into a small problem and I'm not sure how to  
correct it. I'm getting the array with filenames from the folder I'm  
searching in PLUS all the root folders of the machine as well.


This is the code I'm using (note that I'm just echoing the array right  
now; I'll move to inserting data into mySQL after):


function dirList ($directory) {
   $results = array();
   $handler = opendir($directory);
   while ($file = readdir($handler)) {
   if ($file != '.' && $file != '..')
   $results[] = $file;
   }
   closedir($handler);
   return $results;
}

$origin = "/Library/WebServer/Documents/folder1/folder2/images/";

#load file listing into an array
$shell = shell_exec("du $origin");
$array  = array_reverse(explode("\n",$shell));
$contIdArr = array();

$newArr = array();
foreach($array as $elem){
   $newDir = "";
   $pathArray = explode("/", $elem);
   $nodeDepth = count($pathArray);
   for($count=1; $count<$nodeDepth; $count++){
   $newDir = $newDir.$pathArray[$count].'/';
   }
   $newArr[] = '/'.$newDir;
}
sort($newArr);

foreach($newArr as $dir){
   $pathArray = explode("/", $dir);
   $fileListArr = dirList($dir);

   foreach($fileListArr as $file){
echo $file."";
   //Insert file($file) and current dir/path($dir) into db
   }
}


As an output ... i get a list of all the files in the "images" folder  
preceeded by the all the list of root folders on my machine!! How do I  
eliminate the list of root folders?


---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Rahul S. Johari


On Jan 13, 2010, at 10:07 AM, Kenneth Sande wrote:



Ashley Sheridan wrote:

On Wed, 2010-01-13 at 09:25 -0500, Rahul S. Johari wrote:



Ave,

This is what I'm trying to do; I want to read a directory (eg: W: 
\Test \) and take all the filenames found in the directory (eg:  
1.vox,  2.wav, 3.txt) and store them in  a simple mySQL table.


Can I do this?

---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com









You'll probably want to look at the readdir() function. The manual  
page
also has dozens of different example scripts that would be easy to  
tweak

for your purpose.

http://php.net/manual/en/function.readdir.php


Thanks,
Ash
http://www.ashleysheridan.co.uk




I use the glob function in my little homemade "web cam" page, which  
can really swell up in memory when used against a large amount of  
files (in my case around 30k files).

=
$imgdir = 'img/south*';
$files = glob( $imgdir );

// Sort files by modified time, latest to earliest
// Use SORT_ASC in place of SORT_DESC for earliest to latest
array_multisort( array_map( 'filemtime', $files ), SORT_NUMERIC,  
SORT_DESC, $files );

=
http://www.php.net/manual/en/function.glob.php
DISCLAIMER: I found this code on a how-to somewhere out there and  
modified it to fit my need. Quite possibly there are much better  
means to this end.


Ken Sande/KC8QNI





Considering that I have over 80K files in the folder, would this be a  
faster/efficient then the readdir() method? Or should I stick to what  
I'm doing (other email)?


---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Rahul S. Johari


On Jan 13, 2010, at 9:56 AM, Warren Windvogel wrote:


On 2010/01/13 04:25 PM, Rahul S. Johari wrote:

Ave,

This is what I'm trying to do; I want to read a directory (eg: W: 
\Test\) and take all the filenames found in the directory (eg:  
1.vox, 2.wav, 3.txt) and store them in  a simple mySQL table.




Sorry. Forgot to include this.

function dirList ($directory)
{

   // create an array to hold directory list
   $results = array();

   // create a handler for the directory
   $handler = opendir($directory);

   // keep going until all files in directory have been read
   while ($file = readdir($handler)) {

   // if $file isn't this directory or its parent,
   // add it to the results array
   if ($file != '.' && $file != '..')
   $results[] = $file;
   }

   // tidy up: close the handler
   closedir($handler);

   // done!
   return $results;

}

If you're dealing with 1 directory you can use it to read all files  
in it to an array.


Kind regards
Warren




This is an interesting approach. Following is what I came up with to  
scan a directory and store the filenames into an array ... very  
similar to your example:


   $listDir = array();
$dir = "../mounts/wd/IDT/IDT/";
if($handler = opendir($dir)) {
while (($sub = readdir($handler)) !== FALSE) {
if ($sub != "." && $sub != ".." && $sub !=  
"Thumb.db") {

if(is_file($dir."/".$sub)) {
$listDir[] = $sub;
}elseif(is_dir($dir."/".$sub)){
$listDir[$sub] = $this- 
>ReadFolderDirectory($dir."/".$sub);

}
}
}
closedir($handler);
}

and this is what I'm trying to implement in order to store the array  
into a mysql table ..


$db = mysql_connect("localhost","usr","pwd");
mysql_select_db("db",$db);
			$colors=serialize($listDir); //takes the data from a post  
operation...
			$sql="INSERT INTO recordings (ID, RECORDING, ADDED)  
VALUES('','$colors','')";

$result = mysql_query($sql) or die (mysql_error());

I'm not sure if this the best or fastest approach ... but it's running  
in the background as I write this (I should have tested on a smaller  
folder). The folder I'm scanning has literally over 80,000 files ...  
so it's taking LOOONG!!


---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com





--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Kenneth Sande


Ashley Sheridan wrote:

On Wed, 2010-01-13 at 09:25 -0500, Rahul S. Johari wrote:

  

Ave,

This is what I'm trying to do; I want to read a directory (eg: W:\Test 
\) and take all the filenames found in the directory (eg: 1.vox,  
2.wav, 3.txt) and store them in  a simple mySQL table.


Can I do this?

---
Rahul Sitaram Johari
Founder, Internet Architects Group, Inc.

[Email] sleepwal...@rahulsjohari.com
[Web]   http://www.rahulsjohari.com









You'll probably want to look at the readdir() function. The manual page
also has dozens of different example scripts that would be easy to tweak
for your purpose.

http://php.net/manual/en/function.readdir.php


Thanks,
Ash
http://www.ashleysheridan.co.uk



  
I use the glob function in my little homemade "web cam" page, which can 
really swell up in memory when used against a large amount of files (in 
my case around 30k files).

=
$imgdir = 'img/south*';
$files = glob( $imgdir );

// Sort files by modified time, latest to earliest
// Use SORT_ASC in place of SORT_DESC for earliest to latest
array_multisort( array_map( 'filemtime', $files ), SORT_NUMERIC, 
SORT_DESC, $files );

=
http://www.php.net/manual/en/function.glob.php
DISCLAIMER: I found this code on a how-to somewhere out there and 
modified it to fit my need. Quite possibly there are much better means 
to this end.


Ken Sande/KC8QNI


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Read directory; store filenames found in mySQL table?

2010-01-13 Thread Ashley Sheridan
On Wed, 2010-01-13 at 09:25 -0500, Rahul S. Johari wrote:

> Ave,
> 
> This is what I'm trying to do; I want to read a directory (eg: W:\Test 
> \) and take all the filenames found in the directory (eg: 1.vox,  
> 2.wav, 3.txt) and store them in  a simple mySQL table.
> 
> Can I do this?
> 
> ---
> Rahul Sitaram Johari
> Founder, Internet Architects Group, Inc.
> 
> [Email]   sleepwal...@rahulsjohari.com
> [Web] http://www.rahulsjohari.com
> 
> 
> 
> 
> 


You'll probably want to look at the readdir() function. The manual page
also has dozens of different example scripts that would be easy to tweak
for your purpose.

http://php.net/manual/en/function.readdir.php


Thanks,
Ash
http://www.ashleysheridan.co.uk