Jan 272011
 

Cronjobs sind eine praktische Möglichkeit, zeitgesteuert und ohne weiteres zu tun PHP-Code im Hintergrund ausführen lassen zu können.

Das Zend Framework bietet generell sehr nützliche Komponenten an, die man natürlich auch in einem Cronjob verwenden kann. Möchten wir mehr als einen Cronjob für unser Projekt erstellen, bietet es sich an eine Cronjob-Boostrap.php-Datei zu erzeugen. Das ist der wohl auch komplizierteste Teil, da wir hier bestimmen müssen, welche Komponenten/Module/… wir überhaupt benutzen möchten.

Eine solche Datei könnte wie die nachstehende aussehen:

<?php
// Define path to application directory
define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../../application'));

// Define application environment
define('APPLICATION_ENV', 'cronjob');

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR,
array(realpath(APPLICATION_PATH . '/../library'),
realpath('/usr/share/include/'),
get_include_path())));

require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini');

// Bootstrap needed application resources.
$application->bootstrap('Autoload')
->bootstrap('Config')
->bootstrap('Db')
->bootstrap('Cache')
->bootstrap('Locale');

In der dritten Zeile geben wir den Pfad zum Application-Ordner an. Gefolgt von der Angabe unseres Environments. Das ist insbesondere deswegen hilfreich, weil wir unsere application.ini zusätzlich unter Angabe des neuen Bereichs cronjob nutzen können und nicht die komplette Seitenkonfiguration nur für den Cronjob neu erstellen müssen.

Den Eintrag in der application.ini könnten wir wie folgt vornehmen:

[cronjob : production]

resources.frontController.controllerDirectory = ""
resources.layout.layoutPath = ""

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Wir benötigen in einem Cronjob weder unsere Controller-Struktur, noch ein Layout. die Fehlerausgabe hingegen hilft beim auffinden von Problemen. Diese können entweder in stdout oder in eines der zahlreichen Fehlerlogs umgeleitet werden.

Der nächste Schritt ist das hinzufügen der Library-Pfade. Unter ../Library lassen sich Applikationsbezogene Libraries einbinden und unter /usr/share/include/ könnte zB. der Ordner Zend mit dem Zend Framework liegen.

Last but not least müssen wir wie in einer ZendApplication-Anwendung üblich ZendApplication starten und den Speicherort unserer Konfigurationsdatei (idR. application.ini) bekannt geben. Wenn wir nun die benötigten Module bootstrappen, können wir mit dem eigentlichem Cronjob fort fahren. Hier können dann die benötigten Aufgaben eingestellt und ausgeführt werden. So zB. ein Backup von Dateien/Datenbanken anlegen, eMails versenden oder vieles vieles mehr.

 

http://framework.zend.com/issues/browse/ZF-10572

Da es manchmal nötig ist in Formularnamen eckige Klammern zu verwenden, diese Elemente aber nicht umbedingt immer direkt voneinander abhängen, wäre es recht praktisch bereits beim setName()-Aufruf die eckigen Klammern mit true als zweiten Parameter zu erlauben.

Der zugehörige Patch könnte wie folgt aussehen:

--- library/Zend/Form/Element.php	(Revision 23151)
+++ library/Zend/Form/Element.php	(Arbeitskopie)
@@ -475,11 +475,12 @@
      * Set element name
      *
      * @param  string $name
+     * @param  boolean $allowBrackets
      * @return Zend_Form_Element
      */
-    public function setName($name)
+    public function setName($name, $allowBrackets = false)
     {
-        $name = $this->filterName($name);
+        $name = $this->filterName($name, $allowBrackets);
         if ('' === $name) {
             require_once 'Zend/Form/Exception.php';
             throw new Zend_Form_Exception('Invalid name provided; must contain only valid variable characters and be non-empty');
 

Es ist mal wieder soweit. Apple hat Version 4.0.1 des iOS herausgegeben und schon funktioniert das kompilieren der Apps für das Enticklersmartphone nicht mehr.

Doch was kann man dagegen tun? Wie bekommt man die Orange-farbenen Kreise neben der iPhone-Anzeige im Organizer grün?

Ein erneutes herunterladen der Provisioning-Profile hilft hier nichts, soviel sei verraten.

Es ist schon etwas ärgerlich wenn man erst alles durchklicken muss um zur Meldung “The version of iPhone OS on ‘iPhone von fooBar’ does not match any of the versions of iPhone OS supported for development with this installation of the iPhone SDK. Please restore the device to a version of the OS listed below, or update to the latest version of the iPhone SDK; which is available here.” zu gelangen.

Doch im Organizer, nach anklicken des Devices, steht sie schön leserlich über den verschiedenen Versionsbeschreibungen.

Und genau das ist auch das Problem – die iOS-Version ist zu neu für das derzeitig – noch – installierte SDK.

Wenn also iOS upgedated wird, muss auch das SDK neu installiert werden. Zertifikate und Profile sollten hier jedoch erhalten bleiben.

 

Update: (A valid signing identity matching this profile could not be found in your keychain)

Zertifikat exportieren:

$ sudo /Applications/Utilities/Keychain Access.app/Contents/MacOS/Keychain Access

Um ein iPhone auch auf anderen Mac-Geräten zur Entwicklung nutzen zu können, muss der private Schlüssel, mit dem das Team-Zertifikat erzeugt wurde, installiert werden. Dazu exportieren wir es als root-User und importieren es im Schlüsselbund des neuen Mac-Systems.

 

© 2010-2012 RenePardon BoonWeb Suffusion theme by Sayontan Sinha