0

we have a web application written in PHP and we want all our users to be able to upload images for e.g. 50MB.

We will create a directory structure so that every user has its own folder like app/user1/images app/user2/images ...

Now everytime a user uploads an image, we need to check if this is still allowed or not but we don't want 1000 users to continously scan our hard drive counting file sizes in their directory. So writing a script that counts all file sizes in a user directory is not an option I guess?

Is there an easier way to calculate used up space per user and limit our app accordingly?

solsol
  • 1,151

2 Answers2

4

Save the size of the uploads in a database table, do a sum (pictures sizes) for the specific user and compare it to their limit when they upload.

Even better to avoid that sum operation you can add the size value of the upload to a column (TotalUploadsSize) in the user table and compare that to the maximum allowed on each upload.

1

You could possibly do something with disk quotas on the filesystem.

See the related question about quotas per directory. If you have or can use XFS then you can setup project quotas.

Zoredache
  • 133,737