This project requires quality and robust code and more emphasis is placed on the quality of work rather than on the time it takes to be delivered, but a timeframe of 3 weeks would be expected.
The following tasks are required, more specific details (and code) provided after NDA:
1) PDF export speed. The site includes a large number of business reports displayed to the user using the jQuery DataTables plugin ([url removed, login to view]). The plugin offers Java export capability however we do not want to use this functionality and instead wish to offer the capability via PHP. The export functionality has already been built but the speed at which a PDF is created is not ideal. The DOM is passed to PHP using jQuery which does some tidying and uses wkhtmltopdf to generate a PDF; this process takes 7-10 seconds but would like <= 3. In conjunction with the below requirement this may need to be rewritten
2) Report scheduling. These reports can be scheduled by the user to occur at specified intervals with the parameters stored in MySQL. The PHP and supporting code to schedule these reports is required which must be offered in PDF, Excel, csv, txt and then emailed. Excel, csv & txt are easy as PHP can retrieve and build the export (most of this is already written) but for PDF the layout needs to match exactly so needs some sort of headless browser (Phantom JS seems a good candidate) to generate the DOM and pass it to PHP
3) Script scheduling. There is a backend requirement to schedule SQL scripts to run
4) File updating. Due to business requirements the software will run locally on a client server. There needs to be a method to update the entire site directory automatically overnight. This will need to query a remote server, compare file version (stored in db) and if required initiate a download and store the updated files in the site directory. This update may also include a single SQL file which is processed against the MySQL database. The remote server is not yet available so you will have input into its configuration, transfer method etc. The remote server can be either Windows or Linux however the client server will always be Windows Server. The client has a client ID and license key which needs to be validated against a MySQL database on the remote server