function write_ini($array,$file){ $res=array(); foreach($array as $key=>$val){ if(is_array($val)){ $res[]="[$key]"; foreach($val as $skey=>$sval){ $res[]="$skey = ".(is_numeric($sval)?$sval:'"'.$sval.'"'); } } else{ $res[]="$key = ".(is_numeric($val)?$val:'"'.$val.'"'); } } safefilerewrite($file,implode("\r\n",$res)); } function safefilerewrite($fileName,$dataToSave){ if($fp=fopen($fileName,'w')){ $startTime=microtime(TRUE); do{ $canWrite=flock($fp,LOCK_EX); if(!$canWrite){ usleep(round(rand(0,100)*1000)); } } while((!$canWrite)and((microtime(TRUE)-$startTime)<5)); if($canWrite){ fwrite($fp,$dataToSave); flock($fp,LOCK_UN); } fclose($fp); } } $ini=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/file.ini"); $ini['key']='value'; write_ini($ini,$_SERVER['DOCUMENT_ROOT']."/file.ini");
Архив
2021 год
Всего: 40 записей
js hover timeout
$('header nav ul li').hover(function(){ var li=$(this); this.timeout=window.setTimeout(function(){ li.addClass('hover'); },200) },function(){ $(this).removeClass('hover'); if(this.timeout){ window.clearTimeout(this.timeout); } });
php байты в килобайты, мегабайты
function get_file_size($bytes){ if($bytes<1000*1024){ return number_format($bytes/1024,2)."KB"; } elseif($bytes<1000*1048576){ return number_format($bytes/1048576,2)."MB"; } elseif($bytes<1000*1073741824){ return number_format($bytes/1073741824,2)."GB"; } else{ return number_format($bytes/1099511627776,2)."TB"; } }
Firebird LIMIT — лимитировать запрос
Аналогом в Firebird для MySQL запроса
SELECT PCODE,HISTNUM,FULLNAME FROM CLIENTS ORDER BY PCODE DESC LIMIT 10
будет:
SELECT FIRST 10 SKIP 0 PCODE,HISTNUM,FULLNAME FROM CLIENTS ORDER BY PCODE DESC
или:
SELECT PCODE,HISTNUM,FULLNAME FROM CLIENTS ORDER BY PCODE DESC ROWS 10
SELECT PCODE,HISTNUM,FULLNAME FROM CLIENTS ORDER BY PCODE DESC ROWS 1 TO 10
Firebird SELECT MAX CAST AS INT
Задача: нужно выбрать максимальное число из поля, формат которого текстовый.
При следующем запросе будет сделана выборка по алфавиту. т.е. будет выбрано, например, 999, когда присутствует значение 1000
SELECT MAX(HISTNUM) FROM CLIENTS
Обычно это решается так:
SELECT MAX(CAST(HISTNUM AS INT)) FROM CLIENTS
но в Firebird следующая ошибка:
conversion error from string "" GDSCODE = 335544334 SQLCODE = -413
Решение: отсортировать вначале по длине строки, затем по алфавиту, выбрав одну строку. Варианты:
SELECT HISTNUM FROM CLIENTS ORDER BY CHAR_LENGTH(HISTNUM) DESC, HISTNUM DESC ROWS 1
SELECT HISTNUM FROM CLIENTS ORDER BY CHAR_LENGTH(HISTNUM) DESC, HISTNUM DESC ROWS 1 TO 1
SELECT FIRST 1 SKIP 0 HISTNUM FROM CLIENTS ORDER BY CHAR_LENGTH(HISTNUM) DESC, HISTNUM DESC
В конкретном случае нужно было еще сделать проверку на максимальную длину этого числа. Варианты:
SELECT HISTNUM FROM CLIENTS WHERE CHAR_LENGTH(HISTNUM)<7 ORDER BY CHAR_LENGTH(HISTNUM) DESC, HISTNUM DESC ROWS 1
SELECT FIRST 1 SKIP 0 HISTNUM FROM CLIENTS WHERE CHAR_LENGTH(HISTNUM)<7 ORDER BY CHAR_LENGTH(HISTNUM) DESC, HISTNUM DESC
SELinux enable mysql remote access — разрешить удаленный доступ к mysql
setsebool -P httpd_can_network_connect_db 1
To check SELinux
sestatus
To see what flags are set on httpd processes
getsebool -a | grep httpd
To allow Apache to connect to remote database through SELinux
setsebool httpd_can_network_connect_db 1Use -P option makes the change permanent. Without this option, the boolean would be reset to 0 at reboot.
setsebool -P httpd_can_network_connect_db 1
search permissions are missing on a component of the path — centos 7
Ошибка 403:
[Fri Apr 02 12:24:00.736446 2021] [core:error] [pid 8173] (13)Permission denied: [client xxx.xxx.xxx.xxx:65053] AH00035: access to /a.php denied (filesystem path '/var/www/html/a.php') because search permissions are missing on a component of the path
Выполнить:
chcon -R --type=httpd_sys_rw_content_t /var/www/