Kategorien
Doctrine ORM MySQL PHP Symfony2

GET random Object mit Doctrine

Doctrine selbst hat keine ORDER BY rand() Funktion implementiert. Aber es gibt eine Lösung. Man lässt sich den total count der rows ausgeben und nutzt die PHP interne rand() Funktion um FirstResult zu definieren.

    /**
     * @return mixed
     */
    public function getTotal()
    {
        return $this->getEntityManager()->createQueryBuilder()
            ->select('COUNT(p.id)')
            ->from('AppBundle:Product', 'p')
            ->getQuery()
            ->getSingleScalarResult();
    }

    /**
     * @return mixed
     */
    public function getRandom()
    {
        return $this->getEntityManager()->createQueryBuilder()
            ->select('p')
            ->from('AppBundle:Product', 'p')
            ->setFirstResult(rand(0, $this->getTotal()-1))
            ->setMaxResults(1)
            ->getQuery()
            ->getSingleResult();
    }
Kategorien
Debugging Linux PHP Server Shell

wo ist das php log auf diesem Server

wer sich das ab und an fragt, kann mit

php -i | grep log

angezeigt bekommen, wo die aktuelle php installation ihre logs hinschreibt.

Kategorien
Debugging Frameworks Kohana PHP Server

howto get kohana 3.3.x or 3.2.x up and running when default route failes after fresh installation

copy the system/classes/kohana/request.php to your application/classes/kohana/request.php directory and open the file.
edit the file at around line 332 in the detect_uri method.


	public static function detect_uri()
	{

		...

		// cut out the initial base part to make sure the internal routing will get correct input
		$uri = str_replace(Kohana::$base_url.Kohana::$index_file, '', $uri);
		return $uri;
	}

Kategorien
Deployment Frameworks Kohana PHP PHPUnit Server XML

kohana 3.1 unittest mit phpunit

wie man das kohana unittest modul richtig einbindet um für seine applikation bzw. module ein taugliches testframework zu haben, ist hier blog.lysender.com trefflich beschrieben.

Kategorien
Doctrine ORM MySQL PHP

doctrine create and drop table on the fly by orm

um in doctrine erst in der app tables anzulegen oder auch zu droppen kannst du ein yaml schema

MyTestOrm:
  tableName: my_test_table
  columns:
    id:
      type: integer(8)
      primary: true
      autoincrement: true
      unsigned: true
    title:
      type: string(255)
      notnull: true
    created_at:
      type: timestamp
      notnull: true
  indexes:
    id:
      fields: [id]
    title:
      fields: [title]

anlegen und die orms daraus generieren.
dann kannst du in deiner app die table für die orm anlegen

Doctrine::createTablesFromArray(
    array(
        'MyTestOrm'
    )
);

bzw. auch wieder droppen

$table = Doctrine_Core::getTable('MyTestOrm');
$export = new Doctrine_Export();
$export->dropTable($table->getTableName());
Kategorien
Frameworks Kohana PHP

Das Kohana 3 Cheat Sheet

Kohana 3 Cheat Sheet

Kategorien
Debugging Linux MySQL PHP PhpMyAdmin Server

phpmyadmin mit ssl erzwingen

trage einfach in die config.inc.php folgendes ans ende der datei:

// am ende der config.inc.php
$cfg['ForceSSL'] = true;
Kategorien
PHP Server

rekursive php glob funktion – ordner/dateien rekursiv nach pattern filtern


protected function rGlob($pattern = '*', $flags = 0, $path = false)
{
    if (!$path)
    {
        $path = dirname($pattern).DIRECTORY_SEPARATOR;
    }

    $pattern    = basename($pattern);
    $paths      = glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
    $files      = glob($path.$pattern, $flags);
    foreach ($paths as $path)
    {
        $files = array_merge($files, $this->rGlob($pattern, $flags, $path));
    }
    return $files;
}

Kategorien
Apache Deployment Lighttpd Linux OffTopic PHP Server Shell XT Commerce

ioncube php loader auf ubuntu mit lighttpd

Hier eine kurze Anleitung wie man ioncube php loader auf ubuntu mit lighty webserver installieren kann.

# in den tmp ordner wechseln
cd /tmp

# per wget loader sources holen
wget http://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

# entpacken des tar balls
tar xvfz ioncube_loaders_lin_x86.tar.gz

# verschieben des neuen ioncube ordners nach /usr/local/
mv ioncube /usr/local/

# neue aa_ioncube.ini datei in /etc/php5/cgi/conf.d/ erzeugen
vi /etc/php5/cgi/conf.d/aa_ioncube.ini

# je nach php version diese zeile in die aa_ioncube.ini
# datei schreiben und mit :wq speichern 
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so

# lighty neu starten
/etc/init.d/lighttpd restart

Kategorien
Agavi Debugging Frameworks Linux PHP Shell XML

Agavi Custom Logger implementieren

Um in Agavi custom logfiles zu erstellen, benötigt man einen eigens erstellten logger + appender in der app/config/logger.xml.

<!-- logs only custom messages in a custom log -->
<logger name="custom" class="AgaviLogger" level="'custom'">
    <appenders>
        <appender>CustomLogAppender</appender>
    </appenders>
</logger>

<appender name="CustomLogAppender" class="AgaviFileLoggerAppender" layout="DateTimeLayout">
    <ae:parameters>
        <ae:parameter name="file">%core.app_dir%/log/custom.log</ae:parameter>
    </ae:parameters>
</appender>

Dann kann man den Logger quasi überall wo der LoggerManager verfügbar ist benutzen.

$message = 'Custom logging message';
$this->getContext()->getLoggerManager()->log(new AgaviLoggerMessage($message, 'custom'), 'custom');

Und in der bash das logfile einsehen.

tail -f app/log/custom.log