PHP Class for DropBox/GDrive/OneDrive Upload/Download from Queue

Cerrado Publicado hace 5 años Pagado a la entrega
Cerrado 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.

Programación de bases de datos MySQL PHP Arquitectura de software

Nº del proyecto: #16744260

Sobre el proyecto

30 propuestas Proyecto remoto Activo hace 5 años

30 freelancers están ofertando un promedio de $1137 por este trabajo

toseef3

Dear sir, I have read the job requirements very care fully and would like to share that we have 5+ years of experience in Enterprise, web and smartphone app development. We have completed dozens of websites for our Más

$1250 USD en 20 días
(67 comentarios)
7.9
tranngocanh1702

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

$1250 USD en 20 días
(153 comentarios)
7.7
techsoftpk

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

$766 USD en 20 días
(108 comentarios)
7.0
schoudhary1553

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

$1250 USD en 20 días
(69 comentarios)
6.4
awnishdubey1990

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

$750 USD en 21 días
(22 comentarios)
4.6
CodeApex

Hello, I am Php professional and will Write a class in PHP, under PSR standards. If we can discuss the given whole requirement in detail the will provide a exact solution as you need. Assure quality of work within Más

$800 USD en 14 días
(11 comentarios)
3.7
farkyamanish17

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

$888 USD en 7 días
(1 comentario)
3.7
INneerajlodhi

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.

$1244 USD en 20 días
(14 comentarios)
3.5
olegivanoviam

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?

$1250 USD en 20 días
(1 comentario)
3.1
softsketch

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

$1250 USD en 20 días
(2 comentarios)
1.7
Rahulg3029

A proposal has not yet been provided

$833 USD en 5 días
(2 comentarios)
1.4
androboy

I design and develop website in required framework and publish them on client server . I am highly skilled as a Web developer routinely creating innovative and useful website that are popular and that work well. I’m fr Más

$1250 USD en 20 días
(0 comentarios)
0.0