Archive

Archive for the ‘PHP’ Category

How to generate in PHP all combinations of items in multiple arrays

function combinations($arrays, $i = 0) {
    if (!isset($arrays[$i])) {
        return array();
    }
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }
 
    // get combinations from subsequent arrays
    $tmp = combinations($arrays, $i + 1);
 
    $result = array();
 
    // concat each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $result[] = is_array($t) ? 
                array_merge(array($v), $t) :
                array($v, $t);
        }
    }
 
    return $result;
}
 
print_r(
    combinations(
        array(
            array('A1','A2','A3'), 
            array('B1','B2','B3'), 
            array('C1','C2')
        )
    )
);

copy/paste @ stackoverflow

Categories: PHP Tags:

PHP UK 2014 – бележки on-the-fly

Това са моите бележки, направени по време на PHP UK Conference 2014.
Надявам се някой ден да имам време да наипиша още 2-3 изречения по всяка от темите.

OPcache
——-
nginx + php-cgi
deploy – start a new php-cgi processes and then switch nginx to use it

—————–
Profiling PHP app
—————–

codestash

graphite (graphics)

js tool to measure client side

for consumer/user point of view, best TTL is less than 1 sec.

minify css + jss, concatenate css+js
enable opcache
cdn
gzip
memcached/redis
php 5.5
spdy ???
image compression
compress html
yslow
enable dns prefetch

Backup графики

Подготвям един малък “application” за офиса с идеята да го пусна на монитор, закачен за стената.

За сега на него имам само графики за мястото на дисковете, но скоро се надявам да намеря време и да го запълня с малко повече полезна информация 🙂
Така или иначе имам едно излишно Raspberry Pi и се чудя какво да го правя, поне да е monitoring 🙂

Самите графики са HTML5, красиви и благодарение на chart.js 🙂

Можете да погледнете тук, а ето и малка картинка 🙂

server backup.eu charts statcharts.php

P.S. Това е част от server-backup.eu

Categories: backup, HTML5, JavaScript, PHP Tags:

Подготвям един малък “application” за офиса с идеята да го пусна на монитор, закачен за стената.

За сега на него имам само графики за мястото на дисковете, но скоро се надявам да намеря време и да го запълня с малко повече полезна информация 🙂

Ако на някой му е интересно… click here 🙂

Categories: backup, JavaScript, PHP Tags:

CodeIgniter translation class / ci-better-lang

След като вчера написах, че функционалността на CI Language class-a не ми е достатъчна, ето какво сглобих набързо @github

Тъй като предполагам, че това няма да е единственият github проект, който ще бъде публикувант тук, добавих нов widget в дясната колона за по-лесното следене на проектите 🙂

Categories: CodeIgniter, How to ... ?, PHP Tags:

CodeIgniter – Language class или как да направим проекта си multilingual

Ех само какво заглавие му измислих на този пост 🙂

А всъщност исках да кажа, че CodeIgniter няма кой знае колко свястна поддръжка на internationalization & localization. Ще се наложи да напиша такъв клас и разбира се, ще го публикувам тук. Ще бъде мааалко по-гъвкав от сегашният им такъв.

Categories: CodeIgniter, PHP Tags:

Форматиране и проверка на UK Postcode

 
	function UKPostcode($postcode) {
	        $postcode = strtoupper($postcode);
	        $postcode = preg_replace('/[^A-Z0-9]/', '', $postcode);
	        $postcode = preg_replace('/([A-Z0-9]{3})$/', ' \1', $postcode);
	        $postcode = trim($postcode);
 
	        if (preg_match('/^[a-z](\d[a-z\d]?|[a-z]\d[a-z\d]?) \d[a-z]{2}$/i', $postcode)) {
	            return $postcode;
	        } else {
	            return NULL;
	        }
	}
Categories: How to ... ?, PHP, Quick Tips Tags:

Possible PHP Error levels

Value	Constant	Description
1	E_ERROR	Fatal run-time errors. Execution of the script is halted
2	E_WARNING	Non-fatal run-time errors. Execution of the script is not halted
4	E_PARSE	Compile-time parse errors. Parse errors should only be generated by the parser.
8	E_NOTICE	Run-time notices. The script found something that might be an error, but could also happen when running a script normally
16	E_CORE_ERROR	Fatal errors that occur during PHP's initial startup.
32	E_CORE_WARNING	Non-fatal run-time errors. This occurs during PHP's initial startup.
256	E_USER_ERROR	Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()
512	E_USER_WARNING	Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()
1024	E_USER_NOTICE	User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()
2048	E_STRICT	Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.
4096	E_RECOVERABLE_ERROR	Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())
8191	E_ALL	All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)
Categories: PHP Tags: , ,

Модифициране на HTTP Headers с PHP

// See related links for more status codes
 
// Use this header instruction to fix 404 headers
// produced by url rewriting...
header('HTTP/1.1 200 OK');
 
// Page was not found:
header('HTTP/1.1 404 Not Found');
 
// Access forbidden:
header('HTTP/1.1 403 Forbidden');
 
// The page moved permanently should be used for
// all redrictions, because search engines know
// what's going on and can easily update their urls.
header('HTTP/1.1 301 Moved Permanently');
 
// Server error
header('HTTP/1.1 500 Internal Server Error');
 
// Redirect to a new location:
header('Location: http://www.example.org/');
 
// Redriect with a delay:
header('Refresh: 10; url=http://www.example.org/');
print 'You will be redirected in 10 seconds';
 
// you can also use the HTML syntax:
// <meta http-equiv="refresh" content="10;http://www.example.org/ />
 
// override X-Powered-By value
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');
 
// content language (en = English)
header('Content-language: en');
 
// last modified (good for caching)
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
 
// header for telling the browser that the content
// did not get changed
header('HTTP/1.1 304 Not Modified');
 
// set content length (good for caching):
header('Content-Length: 1234');
 
// Headers for an download:
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"'); 
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');
 
// Disable caching of the current document:
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');
 
// set content type:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); // plain text file
header('Content-Type: image/jpeg'); // JPG picture
header('Content-Type: application/zip'); // ZIP file
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation
 
// show sign in box
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';

Не мога да си припиша заслугите, но понеже ми хареса, статията е copy/paste @ jonasjohn

Categories: PHP Tags:

“Bad file descriptor” грешка при компилиране на РНР

Днес инсталирам нова машина и се натъкнах на един странен проблем:
(тук спестявам доста редове грешки при конфигурирането)

./configure: 608: 6: Bad file descriptor

Решението на проблема е, да си инсталирам autoconf2.13 (на къде без него 🙂 )

apt-get install autoconf2.13
Categories: Debian, PHP Tags: