Once you master the art of working with files, a wider world of PHP web development opens up to you. Files aren't as flexible as databases by any means, but they do offer the chance to easily and permanently store information across scripts, which makes them popular amongst programmers.
Files, as you can imagine, can store all sorts of information. However, most file formats (e.g. picture formats such as PNG and JPEG) are binary, and very difficult and/or impossible to write using normal text techniques - in these situations you should use the library designed to cope with each format.
One reminder: if you are using an operating system that uses backslash \ as the path separator (e.g. Windows), you need to escape the backslash with another backslash, making \\. Alternatively, just use /, because Windows understands that just fine too.
Topics covered in this chapter are:
Reading and writing files
How to make a counter
Handling file uploads
Author's Note: CPUs work in billions of operations per second - a 3GHz CPU is capable of performing three billion operations every second. RAM access time is measured in nanoseconds (billionths of a second) - you can usually access some data in RAM in about 40 nanoseconds. Hard drive access time, however, is measured in milliseconds (thousandths of a second) - most hard drive have about a 7ms access time.
What this means is that hard drives are much, much slower than RAM, so working with files from your hard drive is the slowest part of your computer, excluding your CD ROM. Databases are able to store their data in RAM for much faster access time, whereas storing hard drive data in RAM is tricky.
Files are good for storing small bits of information, but it is not recommended that you use them too much for anything other than your PHP scripts themselves - counters are fine in files, as are other little things, but anything larger would almost certainly benefit from using a database. Having said that, please try to avoid the newbie mistake of putting everything into your database - if you find yourself trying to figure out what field type is right to store picture data, please have a rethink!
- 8.1. Reading files
- 8.2. Creating and changing files
- 8.3. Moving, copying, and deleting files
- 8.3.1. Moving files with rename()
- 8.3.2. Copying files with copy()
- 8.3.3. Deleting files with unlink()
- 8.4. Temporary files
- 8.5. Other file functions
- 8.6. Checking whether a file exists
- 8.7. Retrieving a file's status
- 8.8. Dissecting filename information
- 8.9. A working example: making a counter
- 8.10. Handling file uploads
- 8.11. Locking files with flock()
- 8.12. Permissions
- 8.13. Working with directories
- 8.14. Remote files
- 8.15. File checksums
- 8.16. Parsing a configuration file
- 8.17. Summary
- 8.18. Exercises
- 8.19. Further reading
- 8.20. Next chapter