| Author |
Message |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-10-13, 20:26 Rev. 315 Command before Dump für phpBB3 |
  |
Rev. 315:
Ich versuche gerade die command_beforedump für mein phpBB3 zum laufen zu bekommen.
Folgende Situation:
- Befehl wird offensichtlich ausgeführt, im Backup kann ich sehen das der Flag für board_disable während des Backups gesetzt ist.
- Das Forum bleibt aber online - wird nicht deaktiviert.
Man kann sogar während des Backups Beiträge schreiben.
Nach einigem Suchen stellte sich heraus, das der phpBB3 Cache dafür verantwortlich ist.
In der data_global.php im cache Verzeichnis bleibt das Board aktiviert:
'board_disable' => '0',
Nun versuche ich den Cache auszutricksen, in dem ich ihm z.B. den letzen Timestamp einfach auf 0 setze. Denn müsste er, sollte jemand im Moment des Backups die Seite laden, die Config neu auslesen und den board_disable Flag bekommen.
Nach dem Backup kann man ja auch wieder nullen.
So sieht z.B. der Query vor dem Backup aus:
UPDATE `phpbb_config` set config_value=1 where config_name='board_disable'; UPDATE `phpbb_config` set config_value=0 where config_name='cache_last_gc'
Die zweite Update Anweisung wird aber scheinbar ignoriert.
Hat jemand ein Idee, wo ich auf dem Schlauch stehen könnte, oder müsste man dem Dumper erst die Annahme von zwei Anweisungen beibringen?
Gruß
Kevin
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2008-10-13, 21:32 Re: Rev. 315 Command before Dump für phpBB3 |
  |
« Kevin » wrote:
müsste man dem Dumper erst die Annahme von zwei Anweisungen beibringen?
Ja, so ist es.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-10-13, 22:16 (No subject) |
  |
Ah - alles klar, danke.
Praktisch wäre es schon. Könnte man dann gleich in die Liste der SQL Befehle für phpBB3 aufnehmen (sollte es so funktionieren, wie ich es mir gedacht habe). So hat man aber mit einem phpBB3 keine Chance, es während des Backups zu deaktivieren. Der Cache kloppt einem immer dazwischen.
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Wolfgang
MSD-Professional


Age: 40
Joined: 18 Oct 2005
Posts: 98

|
Posted:
2008-10-25, 02:58 (No subject) |
  |
Hallo Kevin,
probiere doch mal in der Tabelle phpbb_config in der Zeile board_disable den Spaltenwert is_dynamic von 0 auf 1 zu ändern.
Dann sollte sich phpbb-3 nicht "merken", ob das Board aktiviert oder deaktiviert ist, sondern das bei jedem Seitenaufruf überprüfen.
Würde mich echt interessieren, ob das schon ausreicht. (Anschließend nicht vergessen, den Cache zu löschen!)
LG, Wolfgang
|
|
  |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-10-25, 11:03 (No subject) |
  |
Danke für den Tipp, Wolfgang!
Werde ich mal ausprobieren.
Ich frage mich jedoch ob das dann nicht das Caching von phpBB3 ad absurdum führen würde. Es müsste ja bei jedem Seitenaufruf die Config komplett wieder ausgelesen werden, oder?
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Wolfgang
MSD-Professional


Age: 40
Joined: 18 Oct 2005
Posts: 98

|
Posted:
2008-10-25, 11:45 (No subject) |
  |
Das Caching-System von phpBB-3 birgt sowieso so manchen Stolperstein (zugegeben aber hauptsächlich für Entwickler und Leute, die MODs einbauen).
Die ganze config-Tabelle wird meines Erachtens nicht bei jedem Seitenaufruf neu eingelesen, Teile davon aber schon (vermutlich ein WHERE is_dynamic = 1).
Außerdem gibt es im Vanilla-phpBB in phpbb_config ja bereits etliche Einträge, bei denen is_dynamic auf 1 steht, beginnend - bei meinem phpMyAdmin mit 30 angezeigten Datensätze pro Seite - auf der 8. Seite und dem Eintrag cache_last_gc.
Wenn Du mir nicht zuvor kommst, probiere ich es nächstes Wochenende selbst aus.
LG, Wolfgang
|
|
  |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-10-25, 12:00 (No subject) |
  |
Ich muss jetzt erstmal bei einem Umzug helfen, werde es aber spätestens nächste Woche ausprobieren.
Wenn ich Ergebnisse habe, werde ich berichten.
Danke Wolfgang!
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-11-01, 15:49 (No subject) |
  |
So, habe es getestet. Funktioniert wunderbar mit is_dynamic (mit dem PHP Backup)!
Vielen Dank nochmal für den Hinweis, wieder was gelernt.
Einzige Einschränkung: mit dem Cronscript werden die Befehle nicht ausgeführt. Mal schauen was man da machen kann. Dafür bräuchte ich das primär.
*edit*
Merkwürdig: in der crondum.pl ist das ausführen der Befehle offensichtlich vorgesehen:
$command_beforedump=($db_command_beforedump_array[$ii]) ? $db_command_beforedump_array[$ii] : "";
$command_afterdump=($db_command_afterdump_array[$ii]) ? $db_command_afterdump_array[$ii] : "";
*edit2*
Erm, ich glaube da sitzt das Probem mal wieder vor dem Bildschirm. Im Log sehe ich, das die Commands offensichtlich auch schon mit Perl ausgeführt wurden.
Muss das nochmal in Ruhe auseinander dröseln.
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
moepschen
Moderator

Age: 33
Joined: 21 Jan 2006
Posts: 809
Location: Frankfurt (Oder)

|
Posted:
2008-11-01, 19:31 (No subject) |
  |
« Kevin » wrote: Erm, ich glaube da sitzt das Probem mal wieder vor dem Bildschirm.
Das Problem, an diesem Problem ist, das die meisten Probleme das nicht selbst erkennen
Aber wenn dem so sei, spricht mal wieder alles für den Dumper
_________________ MfG moepschen
|
|
    |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-11-01, 19:34 (No subject) |
  |
Doch scheinbar ein Problem mit dem Dumper, ich teste aber gerade noch, bevor ich wieder irgendwas nicht fundiertes schreibe.
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-11-01, 19:51 (No subject) |
  |
So, jetzt habe ich das mal durchgetestet.
Das grundsätzliche Problem mit dem Cache ist durch das setzen von is_dynamic auf 1 beim board_disable Feld gelöst, wunderbar.
Nun scheint aber beim anlegen der
$databases['command_before_dump'] (in der mysqldumper.php)
und
$command_beforedump_array (in der mysqldumper.conf.php)
ein Problem zu bestehen.
Und zwar wird in beiden Dateien ein Zeilenumbruch vor dem schließenden '; erzeugt.
Also z.B:
$databases['command_before_dump'][1] = 'UPDATE `phpbb3_config` set config_value=1 where config_name=\'board_disable\'
';
oder in der conf.php:
$command_beforedump_array="UPDATE `phpbb3_config` set config_value=1 where config_name=\'board_disable\'
";
Das PHP Script stört sich da nicht dran, das Perl Script leider schon.
Wenn ich bei den Configs händisch den Zeilenumbruch raus nehme und die Dateien hochlade, werden die Kommandos auch vom Perl Script ausgeführt. Sonst nicht.
Sobald man in der Konfiguration im MSD rum mantscht, hat man natürlich wieder den Zeilenumbruch drin.
Je mehr Befehle man anwählt, also auch für andere DBs, desto mehr Zeilenumbrüche bekommt man in den Konfigurationsdateien.
Mag auch hier die Ursache für das teilweise "verschwinden" der Settings für Before- und Afterdump in der Konfigurationsübersicht liegen?
Ist dieser Bug schon gemeldet worden, bzw bekannt?
Gruß
Kevin
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
Wolfgang
MSD-Professional


Age: 40
Joined: 18 Oct 2005
Posts: 98

|
Posted:
2008-11-02, 04:34 (No subject) |
  |
« Kevin » wrote: Je mehr Befehle man anwählt, also auch für andere DBs, desto mehr Zeilenumbrüche bekommt man in den Konfigurationsdateien.
Mag auch hier die Ursache für das teilweise "verschwinden" der Settings für Before- und Afterdump in der Konfigurationsübersicht liegen?
Ist dieser Bug schon gemeldet worden, bzw bekannt?
Hallo Kevin,
was meinst Du damit?
Dass das Command before Dump im Firefox bisweilen - bis heute - nicht richtig gespeichert wird, habe ich schon 2007 gemeldet. Aber bestimmt meinst Du etwas ganz anderes?
LG, Wolfgang
|
|
  |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-11-02, 12:19 (No subject) |
  |
Hi Wolfgang,
ich meine eigentlich was anderes. Aber das eine mag mit dem anderen zu tun haben.
Ich schätze das der Bug, den ich meine (und der auch reproduzierbar und Browser unabhängig ist) beim schreiben in die Konfigurationsdateien passiert. Irgendwat das ein str_replace oder das $nl zu früh greift.
Entweder in der functions.php oder in der functions_sql.php (function WriteSQL() ?) - ich blicke da leider gerade nicht wirklich durch.
Die Geschichte müsstest du auch reproduzieren können - wähle einfach mal zwei der Befehle aus, ordne die einer DB zu und schaue Dir die mysqldumper.conf.php und mysqldumper.php (oder welche Konfigurationsdateien du auch immer benutzt) danach mal an:
Beispiel mysqldumper.php (mit irgendeinem Befehl ausgewählt) - so sieht es aus (command_before_dump'][7]):
$databases['command_before_dump']=array();
$databases['command_before_dump'][0] = '';
[...]
$databases['command_before_dump'][6] = '';
$databases['command_before_dump'][7] = 'UPDATE forum SET options = options - 1 WHERE options & 1;
';
$databases['command_before_dump'][8] = '';
so sollte es aussehen (damit Perl den Befehl verarbeiten kann - ohne Zeilenumbruch):
$databases['command_before_dump']=array();
$databases['command_before_dump'][0] = '';
[...]
$databases['command_before_dump'][6] = '';
$databases['command_before_dump'][7] = 'UPDATE forum SET options = options - 1 WHERE options & 1;';
$databases['command_before_dump'][8] = '';
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2008-11-02, 13:14 (No subject) |
  |
Ja, ich kann die Beobachtung bestätigen. Danke für den Hinweis.
Fix für MSD 1.23:
Datei inc/functions.php ab Zeile 307
if($databases['db_actual_cronindex']<0)
{
$csadb='$cron_save_all_dbs=1;'.$nl;
$csadb.='$cron_db_array=qw('.$cron_db_array.');'.$nl;
$csadb.='$cron_dbpraefix_array=qw('.$cron_dbpraefix_array.');'.$nl;
$csadb.='$dbpraefix="'.$cron_dbpraefix.'";'.$nl;
$csadb.='$command_beforedump_array="'.$cron_db_cbd_array.'";'.$nl;
$csadb.='$command_afterdump_array="'.$cron_db_cad_array.'";'.$nl;
}
else
{
$csadb='$cron_save_all_dbs=0;'.$nl;
$csadb.='$cron_db_array="";'.$nl;
$csadb.='$cron_dbpraefix_array="";'.$nl;
$csadb.='$dbpraefix="'.$cron_dbpraefix.'";'.$nl;
if (!isset($databases['command_before_dump'][$databases['db_selected_index']])) $databases['command_before_dump'][$databases['db_selected_index']]='';
$csadb.='$command_beforedump_array="'.$databases['command_before_dump'][$databases['db_selected_index']].'";'.$nl;
if (!isset($databases['command_after_dump'][$databases['db_selected_index']])) $databases['command_after_dump'][$databases['db_selected_index']]='';
$csadb.='$command_afterdump_array="'.$databases['command_after_dump'][$databases['db_selected_index']].'";'.$nl;
}
ersetzen durch
if($databases['db_actual_cronindex']<0)
{
$csadb='$cron_save_all_dbs=1;'.$nl;
$csadb.='$cron_db_array=qw('.$cron_db_array.');'.$nl;
$csadb.='$cron_dbpraefix_array=qw('.$cron_dbpraefix_array.');'.$nl;
$csadb.='$dbpraefix="'.$cron_dbpraefix.'";'.$nl;
$csadb.='$command_beforedump_array="'.trim($cron_db_cbd_array).'";'.$nl;
$csadb.='$command_afterdump_array="'.trim($cron_db_cad_array).'";'.$nl;
}
else
{
$csadb='$cron_save_all_dbs=0;'.$nl;
$csadb.='$cron_db_array="";'.$nl;
$csadb.='$cron_dbpraefix_array="";'.$nl;
$csadb.='$dbpraefix="'.$cron_dbpraefix.'";'.$nl;
if (!isset($databases['command_before_dump'][$databases['db_selected_index']])) $databases['command_before_dump'][$databases['db_selected_index']]='';
$csadb.='$command_beforedump_array="'.trim($databases['command_before_dump'][$databases['db_selected_index']]).'";'.$nl;
if (!isset($databases['command_after_dump'][$databases['db_selected_index']])) $databases['command_after_dump'][$databases['db_selected_index']]='';
$csadb.='$command_afterdump_array="'.trim($databases['command_after_dump'][$databases['db_selected_index']]).'";'.$nl;
}
Dann wird die Konfiguration ohne Zeilenumbruch gespeichert.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Kevin
Moderator


Age: 37
Joined: 12 Nov 2006
Posts: 322
Location: Hamburg

|
Posted:
2008-11-02, 13:16 (No subject) |
  |
And the fabulous and magical DSB strikes again like a lightning!
Danke, werde ich gleich testen.
_________________ "Der Mensch, der bereit ist seine Freiheit aufzugeben um Sicherheit zu gewinnen, wird beides verlieren."
|
|
   |
 |
|
|
CrackerTracker © 2004 - 2012 CBACK.de
Powered by Orion based on phpBB
© 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
All times are GMT + 2 Hours
phpBB SEO
|