Importing large databases sucks. It can take anywhere from as short as 10 min to a few hours. Worse is when it fails mid-import. So here is a faster way to import. This script can import a 30gb database in under 40min reliably. Disclaimer: This tutorial is only for macOS users. If you’re on windows, good luck. Prerequisites: Must use MAMP Must have Homebrew installed Install these using Brew brew install pv brew install pigz Placing the fast import script Download the file from my GitLab fast_mysql_import.sh Make sure its placed inside this folder /users/<your_username_here> Update the permission of the file ~/ chmod +x ~/fast_mysql_import.sh Update zshrc, include MAMP path echo 'export PATH="/Applications/MAMP/Library/bin:$PATH"' >> ~/.zshrc source ~/.zshrc Run the script ./fast_mysql_import.sh ~/Desktop/smaplivedb-20260303-0630.sql.gz smap030326 root Credits to Danish for creating the script.
Input Validation & Sanitisation Always use CI3's Form Validation library before processing any user input. Never use $_GET , $_POST , or $_REQUEST directly. Always go through $this->input . Always prevent XSS (Cross-Site Scripting) by using $this->security->xss_clean() for other texts not part of the form. Enabling global_xss_filtering in the config may break binary/JSON POST bodies. For APIs, handle XSS manually per field. Cross-Site Request Forgery ( CSRF ) Enable CSRF protection globally in config.php . Always use echo form_open(); since it automatically adds the CSRF token value. If you can't, then include <?= $this->security->get_csrf_token_name() ?> in every form (eg: ajax). SQL Injection Prevention NEVER concatenate user input into raw SQL. Avoid $this->db->query() with raw user input. Always use CI3's Query Builder or prepared statements with bindings . File Upload Security Use CI3's Upload library. Do not use move_upl...