PHP Class for DropBox/GDrive/OneDrive Upload/Download from Queue
$750-1500 USD
Pagado a la entrega
Write a class in PHP, under PSR standards(ready for PSR-4 Autoloader and written in PSR-2 standard)
Cloud drives are associated to users, with access_token stored in mysql. Assume you already have tokens for each cloud needed for upload/download -> getting them is handled outside this project.
Upload:
1. The class would access a simple database , grab a list of tasks and files associated to them (2 MYSQL tables > first for tasks, and another for files in a task)
upload_tasks: [ id int, user_id int, created timestamp, progress decimal(5,2), completed tinyint(1) default 0, paused_until timestamp default 0, last_updated timestamp, completed_timestamp timestamp ]
upload_files: [ id int, hash varchar(40), node_id varchar(4), path, completed tinyint(1) default 0, fails tinyint(2) default 0, failed tinyint(1) default 0 ]
2. The class would filter out files based on the NODE_ID column in the second table, aligning to a $node_id passed to it.
path in the upload_files table is the full path to upload the file to, including folder tree.
Create the folder tree if it doesn't exist.
If an identical file exists, overwrite only if it's a different size than the one being uploaded.
3. For each file:
a. If uploaded successfully, mark completed in the files table
b. If failed due to temporary GDrive/DropBox/OneDrive error update paused_until to 10 minutes from now. Do not run uploads from the tasks again until that time
c. if fails because of a class error(file doesn't exist) mark file as failed.
d. If general upload issue, update fails. after 4 fails mark file as failed.
e. If file is failed completely(d) or succeeded, update progress on the task => progress = files/total_files*100
Download:
1. The class would access a simple database , grab a list of tasks and files associated to them (2 MYSQL tables > first for tasks, and another for files in a task. For when finished > folders, files, folder_files for storing metadata)
download_tasks: [ id int, user_id int, created timestamp, progress decimal(5,2), completed tinyint(1) default 0, paused_until timestamp default 0, last_updated timestamp, completed_timestamp timestamp ]
download_files: [ id int, hash varchar(40), node_id varchar(4), path varchar(1023), completed tinyint(1) default 0, fails tinyint(2) default 0, failed tinyint(1) default 0 ]
files : [ id, hash, node_id ]
folder_files: [ id, user_id, hash, name, folder_id ]
folders: [ id, user_id, parent_id, name, name_md5 ]
2. The class would filter out files based on the NODE_ID column in the second table, aligning to a $node_id passed to it.
path in the download_files table is the full path to upload the file to, including folder tree.
3. For each file:
a. Grab from the cloud account from "path"
a. If downloaded successfully: copy to $store_folder(passed to class)
b. If failed due to temporary GDrive/DropBox/OneDrive error update paused_until to 10 minutes from now. Do not run uploads from the tasks again until that time
c. if fails because of a class error(file doesn't exist) mark file as failed.
d. If general download issue, update fails count in the upload_files table. after 4 fails mark file as failed.
e. If file is failed completely(d) or succeeded, update progress on the task => progress = files/total_files*100
Additional Requirements:
1. The class must handle more than one task in parallel. (download/upload from $X tasks in parallel. One file-per-task at a time)
2. The class must utilise GUZZLE/HTTP for uploads/downloads. Include using composer only.
3. [login to view URL] -> use async/parallel requests to implement parallelization
4. Database connectivity must be with PDO/Mysql only. Do use prepared statements.
5. All connectivity to cloud drives must use tokens. no username/password login.
The tokens are unique per user_id. store them in a mysql table. design it however you want.
Handling of token creation is not required. Assume you get the tokens from the database.
Nº del proyecto: #16744260
Sobre el proyecto
30 freelancers están ofertando un promedio de $1137 por este trabajo
Hi, I am Anna with more than 6 years experience in web and cross-platform app development including Hybrid, PHP, Laravel framework, Slim, CodeIgniter, MySQL, PostgreSQL, HTML, CSS, Javascript, jQuery, Vuejs, Ajax, Más
Hi there, I am professional SEO friendly web designer & developer.i can do this job for you Please send me message so that we can discuss the project in detail I have 5+ years of experience with more than 500 su Más
Hi there..... Warm Greetings We came along with your request for PHP Class for DropBox/GDrive/OneDrive Upload/Download from Queue and we reviewed your project description. We'd like to help you with confidence an Más
Dear sir, I'm very interested for this Special well known API integration for file uploading project, I have 4+ Year of experience in this Field & I can surely do this project, I work with My Experienced Tea Más
Hi there, I have more than 6years of experience in PHP, Codeigniter, WordPress, MySql, CSS. I have done many projects related to website development. I can starts work by today. Please message me for further disc Más
Assured work done with 100% quality. pay after satisfaction. I am very experienced in web Once you trust me i will defiantly do fruitful for you.
Hi. My name is Oleg and I am senior C#/.NET software developer from Ukraine. Please contact to discuss any other details regarding the project. Do you really need it to be written in nothing but PHP?
Hello, We have read your project description ,understood and want to have further discussion . We work on Database Programming, MySQL, PHP, Software Architecture. We are waiting for your response. Thanks & R Más