sapo sessions php

Download Sapo Sessions PHP

If you can't read please download the document

Upload: joao-machado

Post on 16-Apr-2017

1.203 views

Category:

Technology


0 download

TRANSCRIPT

PHP

PHP

Full story

Joo Machado

PHP

1994 - Personal Home PageDesenvolvido em C

Veio substituir um conjunto de scripts em perl

Hoje - PHP: Hypertext Preprocessor

Engines Zend engine

Roadsend - native machine code

Phalanger - .net

Quercus - Java

PHP no SAPO

Servers :

Fotos - 3

Fama - 1

Cinema - 2

Mobile + meo - 4

Spot - 2

Videos - 4

Homepage - 3

Mail - 13

Mensageiro - 2

Wiki - 2

Farm PHP 4+5 - 7 (215 Vhosts)

PHP no mundo

tiobe.com

Porqu PHP?

Linguagem de alto nvel

Fcil de aprender e desenvolver

Bem documentado

Multi-plataforma

Mod PHP Apache - FCGI

Extenses em C e C++ via mdulos, .NET, JAVA

Embutido / Templating

Amplamente utilizado

Grande comunidade de programadores

Contexto

Direccionado para a WEB

C e ser sempre mais rpido!

WS, Desktop, etc. Existem linguagens mais apropriadas

Arquitectura ideal

Internacionalizao

NLS Native Language Support

Utiliza o GNU gettext

Ex :

setlocale(LC_ALL, 'pt_PT');

bindtextdomain("myPHPApp", "/var/www/languageFiles");echo _("Welcome to My PHP Application");

Escalabilidade

Share-nothing ArchitectureComo o HTTP, cada pedido distinto

Shared data apenas ao nvel da data-store layer

Sem front controllers - Centralizao de pedidos

PermiteDistribuir a carga

Invisibilidade de erros entre datacenters

Modularizao

Simplicidade de desenvolvimento

Facilita debug / tracing / profiling

Ateno

Cdigo em PHP lento!

Deve ser visto com uma framework rica para a web

bastante eficiente, utilizando funes nativas

Demasiado cdigo em PHP contraproducente

Cdigo crtico deve passar a mdulo em C

Cdigo especfico deve ser um servio independente

Dicas

Dicas - performance

No assumir, testar!

Performance bottlenecks, raramente esto onde imaginamos

Evitar funes com peso extra desnecessrioinclude vs require_once

explode vs preg_split

No utilizar ficheiros para sesses -> memcache(d)

Reduzir ciclos, queries, stats, remote requests

Evitar HTMLWriters, HTML deve ser HTML!

Dicas - performance

Evitar expresses regulares

Utilizar sistemas de cache (Memria local, memcached)

Evitar mensagens de erro, mesmo warnings, notices, deprecated

URI's de ficheiros sempre absolutos!

Evitar comandos de alto nvel $a(); $$b; $c->{$k}

Dicas - Apache

directory index Erro comum

stat64("/var/www/index.html", 0xbfd279ac) = -1 ENOENT (No such file or directory)stat64("/var/www/index.cgi", 0xbfd27afc) = -1 ENOENT (No such file or directory)stat64("/var/www/index.pl", 0xbfd27afc) = -1 ENOENT (No such file or directory)stat64("/var/www/index.php", {st_mode=S_IFREG|0664, st_size=7198, ...}) = 0

Fix DirectoryIndex

#DirectoryIndex index.html index.cgi index.pl index.php DirectoryIndex index.php

Dicas -Apache

Se no utilizamos o .htaccess desligarCaso contrrio ir fazer um stat a cada pedido

AllowOverride none

Evitar symlinks

Novidades

Objectos

Em PHP4, a cada cpia de um objecto, era feito um clone

Em PHP5 os objects so passados por referncia, para efectuar uma cpia temos de pedir explicitamente $copy = clone $object;

Referncias

function teste(&$a){$a = 'p';}

$k = &$z;

Namespace

Reflection

Reflector

ReflectionClass

ReflectionExtension

ReflectionFunction

ReflectionFunctionAbstract

ReflectionMethod

ReflectionObject

ReflectionParameter

ReflectionProperty

jpaulo@jp-laptop:~$ php --rf fopenFunction [ function fopen ] { Parameters [4] { Parameter #0 [ $filename ] Parameter #1 [ $mode ] Parameter #2 [ $use_include_path ] Parameter #3 [ $context ] }}

Type Hinting

Late static bindings

A B

Interface Seguir um contrato

Abstract

Final method

Final class

Anonymous functions - Closure

Magic methods

__construct, __destruct, __call, __callStatic,__get, __set, __isset, __unset, __sleep, __wakeup, __set_state, __invoke, __toString, __clone

SPL

Standard PHP Library Permite estender/criar um conjunto de funcionalidades tpicas

Iterators, ArrayAccess, RecursiveFilterIterator, FilesystemIterator, etc

Activo por omisso a partir da verso 5.3

Iterator

ArrayAccess

Mdulos

Solr

Datetime

date_default_timezone_set('America/New_York');

memcache(d)

PECL/memcacheMature

Standalone

Simples

Serializa dados no escalares

Converte as Keys automaticamente

PECL/memcachedUtiliza a libmemcached

Keys no podem ter espaos ou high characters

Raw API

Mais funcionalidades

Compatvel perl etc.

Memcache (d)

Limite de 1Mb

Data de expirao em segundos

Se valor maior que 30 dias, passa a timestamp

Dados no so apagados ao expirar

Items so evicted quando se necessita do espao

Existem funes especficas para increment, replace, etc.

SQL - PDO

Database Access LayerNo faz abstraco de SQL!

SuportaOracle, MySQL, MS SQL Server, PostgreSQL,

Prepared statements

Excepes ou error handling

Transaces

etc.

PDO - Ex1

PDO - Ex2

$db = MyPDO::singleton('ptmail');

Simple XML

WebServices

OAuth

SCA - experimental

SOAP

XML-RPC

SOAP

Streams

Retira importncia ao Curl

Stream Filters - Ex. encriptar

Stream Contexts Ex. Headers HTTP

Stream Errors

Stream Wrapper implementar um protocolo

Streams - Ex

ob_start - output buffering

ob_start ()

ob_get_contents()

ob_end_clean()

ob_ flush()

ob_end_flush()

ob_gzhandler()

ob_iconv_handler()

...

Segurana

Magic quotes

PHP 5.3 - Deprecated

PHP 6 - Removed

Filter

Filter - sanitizao

FILTER_SANITIZE_EMAIL

FILTER_SANITIZE_ENCODED

FILTER_SANITIZE_SPECIAL_CHARS

FILTER_SANITIZE_STRING

FILTER_SANITIZE_URL

FILTER_UNSAFE_RAW

Algumas validam/corrigem inclusive bugs XSS dos Browsers

Suhosin Patch

Encriptao transparente

Desactivar eval()

Desactivar Remote include

Protege multiline mail()

Banir ficheiros binary/executable

Limite de iterao no disco e whitelists

...

Segurana - sesses

Ficheiros / DB / Memcache

Opes Cookie HTTP

Desligar trans_sid

Validar Referer

Validar IP (problema farms de proxies)

Regenerate id

Optimizao, Debug, Profiling

Zend

Zend Server

Zend Plaform

Zend Guard

Zend Studio - edit/debug/profile

Apc ( op-code cache system )

Inclued

strace

%apache2 -X

% strace -p 16367 -o sys1.txtProcess 16367 attached - interrupt to quit

(Fazer um pedido ao site)

Desligar processoProcess 16367 detached

% grep stat sys1.txt | grep -v fstat | wc l153

xdebug

zend_extension = /usr/local/.../xdebug.so

xdebug.profiler_enable = 1

xdebug.profiler_aggregate = On

xdebug.profiler_output_dir = /tmp

% kcachegrind cachegrind.out.aggregate.*

webgrind Web viewer

Xdebug

webgrind

Outros

DBG Comand Line

Valgrind

APD (Advanced PHP Debugger)

Gdb (GNU Project Debugger)

Boas prticas

Tudo em ficheiros de configurao

Class load

Class debug

Class profile

Class log

Utilitrio FirePHP

END

[email protected]