More sweeps to replace select * with actual returned column names dramatically reduces php memory usage and speeds up processing dramatically especially in the crons since they run all the time

This commit is contained in:
johnnyq
2026-08-06 13:10:23 -04:00
parent b8c9d5b4cf
commit b3744e9ed5
247 changed files with 816 additions and 457 deletions

View File

@@ -18,7 +18,7 @@ require_once "../config.php";
require_once "../includes/inc_set_timezone.php";
require_once "../functions.php";
$sql_settings = mysqli_query($mysqli, "SELECT * FROM settings WHERE settings.company_id = 1");
$sql_settings = mysqli_query($mysqli, "SELECT config_backup_cron_type, config_enable_cron FROM settings WHERE settings.company_id = 1");
$row = mysqli_fetch_assoc($sql_settings);
$config_enable_cron = intval($row['config_enable_cron']);

View File

@@ -19,7 +19,7 @@ require_once "../includes/inc_set_timezone.php";
require_once "../functions.php";
$sql_settings = mysqli_query($mysqli, "SELECT * FROM settings WHERE settings.company_id = 1");
$sql_settings = mysqli_query($mysqli, "SELECT config_enable_cron FROM settings WHERE settings.company_id = 1");
$row = mysqli_fetch_assoc($sql_settings);

View File

@@ -86,7 +86,7 @@ function cronJobClaim($mysqli, array $job): bool
cron_job_interval_minutes = $default_interval,
cron_job_daily_at = $default_daily_at");
$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM cron_jobs WHERE cron_job_name = '$name' LIMIT 1"));
$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT cron_job_daily_at, cron_job_enabled, cron_job_interval_minutes, cron_job_schedule FROM cron_jobs WHERE cron_job_name = '$name' LIMIT 1"));
if (!$row) {
return false;

View File

@@ -18,7 +18,7 @@ require_once "../config.php";
require_once "../includes/inc_set_timezone.php";
require_once "../functions.php";
$sql_settings = mysqli_query($mysqli, "SELECT * FROM settings WHERE settings.company_id = 1");
$sql_settings = mysqli_query($mysqli, "SELECT config_enable_cron FROM settings WHERE settings.company_id = 1");
$row = mysqli_fetch_assoc($sql_settings);

View File

@@ -54,7 +54,11 @@ class StaticTokenProvider implements OAuthTokenProvider {
/** =======================================================================
* Load settings
* ======================================================================= */
$sql_settings = mysqli_query($mysqli, "SELECT * FROM settings WHERE company_id = 1");
$sql_settings = mysqli_query($mysqli, "SELECT config_enable_cron, config_mail_oauth_access_token,
config_mail_oauth_access_token_expires_at, config_mail_oauth_client_id,
config_mail_oauth_client_secret, config_mail_oauth_refresh_token,
config_mail_oauth_tenant_id, config_smtp_encryption, config_smtp_host,
config_smtp_password, config_smtp_port, config_smtp_provider, config_smtp_username FROM settings WHERE company_id = 1");
$row = mysqli_fetch_assoc($sql_settings);
$config_enable_cron = intval($row['config_enable_cron']);

View File

@@ -26,7 +26,20 @@ require_once "../config.php";
require_once "../includes/inc_set_timezone.php";
require_once "../functions.php";
$sql_companies = mysqli_query($mysqli, "SELECT * FROM companies, settings WHERE companies.company_id = settings.company_id AND companies.company_id = 1");
$sql_companies = mysqli_query($mysqli, "SELECT company_city, company_country, company_currency, company_email, company_locale,
company_name, company_phone, company_phone_country_code, company_state, company_website,
config_enable_alert_domain_expire, config_enable_cron, config_invoice_from_email,
config_invoice_from_name, config_invoice_late_fee_enable, config_invoice_late_fee_percent,
config_invoice_prefix, config_log_retention, config_login_remember_me_expire,
config_mail_from_email, config_mail_from_name, config_module_enable_accounting,
config_module_enable_itdoc, config_module_enable_ticketing,
config_recurring_auto_send_invoice, config_send_invoice_reminders, config_smtp_encryption,
config_smtp_host, config_smtp_password, config_smtp_port, config_smtp_provider,
config_smtp_username, config_telemetry, config_theme, config_ticket_autoclose_hours,
config_ticket_client_general_notifications, config_ticket_email_parse,
config_ticket_from_email, config_ticket_from_name,
config_ticket_new_ticket_notification_email, config_ticket_prefix,
config_whitelabel_enabled, config_whitelabel_key FROM companies, settings WHERE companies.company_id = settings.company_id AND companies.company_id = 1");
$row = mysqli_fetch_assoc($sql_companies);
@@ -739,7 +752,8 @@ while ($row = mysqli_fetch_assoc($sql_recurring_invoices)) {
// Get details of the newly generated invoice
$sql = mysqli_query(
$mysqli,
"SELECT * FROM invoices
"SELECT client_id, client_name, contact_email, contact_name, invoice_amount, invoice_date,
invoice_due, invoice_number, invoice_prefix, invoice_scope, invoice_url_key FROM invoices
LEFT JOIN clients ON invoice_client_id = client_id
LEFT JOIN contacts ON clients.client_id = contacts.contact_client_id AND contact_primary = 1
WHERE invoice_id = $new_invoice_id"
@@ -868,7 +882,8 @@ while ($row = mysqli_fetch_assoc($sql_recurring_payments)) {
if ($recurring_payment_saved_payment_id) {
// Get the saved payment method and provider details
$saved_payment = mysqli_fetch_assoc(mysqli_query($mysqli, "
SELECT * FROM client_saved_payment_methods
SELECT payment_provider_account, payment_provider_id, payment_provider_name,
payment_provider_private_key, saved_payment_description, saved_payment_provider_method FROM client_saved_payment_methods
LEFT JOIN payment_providers ON saved_payment_provider_id = payment_provider_id
WHERE saved_payment_id = $recurring_payment_saved_payment_id
AND saved_payment_client_id = $client_id

View File

@@ -37,7 +37,7 @@ $config_ticket_from_name = escapeSql($config_ticket_from_name);
$config_ticket_email_parse_unknown_senders = intval($row['config_ticket_email_parse_unknown_senders']);
// Get company name & phone & timezone
$sql = mysqli_query($mysqli, "SELECT * FROM companies, settings WHERE companies.company_id = settings.company_id AND companies.company_id = 1");
$sql = mysqli_query($mysqli, "SELECT company_name, company_phone, company_phone_country_code FROM companies, settings WHERE companies.company_id = settings.company_id AND companies.company_id = 1");
$row = mysqli_fetch_assoc($sql);
$company_name = escapeSql($row['company_name']);
$company_phone = escapeSql(formatPhoneNumber($row['company_phone'], $row['company_phone_country_code']));
@@ -764,7 +764,7 @@ foreach ($messages as $message) {
} else {
// Else: check if sender domain is registered
$from_domain_esc = mysqli_real_escape_string($mysqli, $from_domain);
$domain_sql = mysqli_query($mysqli, "SELECT * FROM domains WHERE domain_name = '$from_domain_esc' AND domain_archived_at IS NULL LIMIT 1");
$domain_sql = mysqli_query($mysqli, "SELECT domain_client_id, domain_name FROM domains WHERE domain_name = '$from_domain_esc' AND domain_archived_at IS NULL LIMIT 1");
$domain_row = mysqli_fetch_assoc($domain_sql);
if ($domain_row && $from_domain == $domain_row['domain_name']) {
@@ -816,7 +816,7 @@ foreach ($messages as $message) {
// 4. A known domain?
if (!$email_processed) {
$from_domain_esc = mysqli_real_escape_string($mysqli, $from_domain);
$domain_sql = mysqli_query($mysqli, "SELECT * FROM domains WHERE domain_name = '$from_domain_esc' AND domain_archived_at IS NULL LIMIT 1");
$domain_sql = mysqli_query($mysqli, "SELECT domain_client_id, domain_name FROM domains WHERE domain_name = '$from_domain_esc' AND domain_archived_at IS NULL LIMIT 1");
$rowd = mysqli_fetch_assoc($domain_sql);
if ($rowd && $from_domain == $rowd['domain_name']) {