imap_delete problem!!!
7 отговора
121 прегледа
imap_delete problem!!!
Problemyt e sledniq:
polzwam pop3 daemon za poshtata i si imam cron proces na PHP, koito periodichno si wzima mailowe, obrabotwa gi i estestweno - gi trie. da, ama ne e bash taka.
znachi, mailowete sa dosta, i ponqkoga mogat za kratko wreme da se nasaberat w ogromno kolichestwo (primerno 1000). polzwam imap_delete za da gi triq i kogato sa malko, wsichko e ok, no kogato stanat poveche, neizwestno zasto weche nishto ne se trie ili e random trieneto.
widqh kato komentar slednoto:
<<<<For all those people who ask "Why in the world can't I delete messages from POP3 boxes" - you need to expunge right after you delete. This flag is not persistent when dealing with POP3 boxes (compared to IMAP); thus if you had to reconnect to the POP3 server after you deleted something, but haven't expunged it yet, you loose it. In short, call expunge or explicitly close the box after you are done with marking messages for deletion.>>>>
e naprawih go da prawi sled wseki imap_delete i imap_expunge i pak ne shte, da go ....
nqkoi ima li ideq kyde e problemyt???
polzwam pop3 daemon za poshtata i si imam cron proces na PHP, koito periodichno si wzima mailowe, obrabotwa gi i estestweno - gi trie. da, ama ne e bash taka.
znachi, mailowete sa dosta, i ponqkoga mogat za kratko wreme da se nasaberat w ogromno kolichestwo (primerno 1000). polzwam imap_delete za da gi triq i kogato sa malko, wsichko e ok, no kogato stanat poveche, neizwestno zasto weche nishto ne se trie ili e random trieneto.
widqh kato komentar slednoto:
<<<<For all those people who ask "Why in the world can't I delete messages from POP3 boxes" - you need to expunge right after you delete. This flag is not persistent when dealing with POP3 boxes (compared to IMAP); thus if you had to reconnect to the POP3 server after you deleted something, but haven't expunged it yet, you loose it. In short, call expunge or explicitly close the box after you are done with marking messages for deletion.>>>>
e naprawih go da prawi sled wseki imap_delete i imap_expunge i pak ne shte, da go ....
nqkoi ima li ideq kyde e problemyt???
Re: imap_delete problem!!!
Аз не съм имал подобен порблем, но може да има бъг в PHP -то. Може да потърсиш каква е стойноста на променливата която се инициализира. Може пък да е само char(255). Това може да го търсиш в сорса на PHP. Другия вариант е директно да го пратиш като bug в PHP и да видиш дали ще има резултат.
Re: imap_delete problem!!!
togawa izliza, che ima greshka w POP3 server-a ???
prawih test-owe i glej kwo stawa ....
znachi chastta ot programkata e primerno slednata//get number of messages
===================================
$msgnum = imap_num_msg( $mbox );
for( $i=1; $i<=$msgnum; $i++ ){
imap_delete( $mbox, $i );
imap_expunge( $mbox ); //twa go prawq, eventualno da nqma nqkakwi stranichni problemi
}
$msgnum = imap_num_msg( $mbox );
===================================
izpechatwam si az broiat emails predi i sled i kvo mislish, che stava ... wseki pyt mi iztriwa, ama tochno polowinata (-1, ako e nechetno)
t.e. ot 800 na 400 i t.n do 2, 1 i 0
prosto si e ........
prawih test-owe i glej kwo stawa ....
znachi chastta ot programkata e primerno slednata//get number of messages
===================================
$msgnum = imap_num_msg( $mbox );
for( $i=1; $i<=$msgnum; $i++ ){
imap_delete( $mbox, $i );
imap_expunge( $mbox ); //twa go prawq, eventualno da nqma nqkakwi stranichni problemi
}
$msgnum = imap_num_msg( $mbox );
===================================
izpechatwam si az broiat emails predi i sled i kvo mislish, che stava ... wseki pyt mi iztriwa, ama tochno polowinata (-1, ako e nechetno)
t.e. ot 800 na 400 i t.n do 2, 1 i 0
prosto si e ........
Re: imap_delete problem!!!
Problema ima reshenie ;-) Znachi:
for ( $i=1; $i<=$num_msg; $i++ ) {
imap_delete($mbox, $i);
echo "doing $i....
";
}
imap_expunge($mbox);
Ta kogato izvikash imap_expunge($mbox) toj premestva vsichki saobstenia. Primerno ako imash 1,2,3,4,5 sled dedete na 1 i imap_expunge te stavat 1,2,3,4 t.e se prepodrezdat v bufera, a ti veche imash for cikal za dvojno poveche ;-) ili na vseki vtori takt gubish po edim msg.
Dano tova ti reshi problema
for ( $i=1; $i<=$num_msg; $i++ ) {
imap_delete($mbox, $i);
echo "doing $i....
";
}
imap_expunge($mbox);
Ta kogato izvikash imap_expunge($mbox) toj premestva vsichki saobstenia. Primerno ako imash 1,2,3,4,5 sled dedete na 1 i imap_expunge te stavat 1,2,3,4 t.e se prepodrezdat v bufera, a ti veche imash for cikal za dvojno poveche ;-) ili na vseki vtori takt gubish po edim msg.
Dano tova ti reshi problema
Re: imap_delete problem!!!
ufff, mnogo typ, ama wqrwaj twa beshe test ot otchaqnie, shtoto tezi neshta sa naistina ot mnogokratnoto imap_expunge (shtoto pisheshe, che trqbwa da go wikam direktno sled delete-a, za da nqma problemi i az .... bez da se zamislqm)
ama da znaesh, che towa ne reshawa problema. dnes imah wreme da naprawq po-seriozen test i rezultata e sledniq:
znachi wyrshi se programkata, kvoto si wyrshi (primerno za okolo 20 min.) i sled towa prawi neshto takowa
=========================
for($i=1;$i<=$mgnum;$i++){
imap_delete($mbox, $i);
}
imap_expunge($mbox);
=========================
i twa ne raboti (t.e. izpylnqwa se, ama ne trie nishto)
ako pusna edna druga test-owa programka sys systiq kod, ama samo s nego, gi trie wsichki. Prosto edinstwenoto, koeto mi idwa naum e, che ako idwa prez wremeto, koeto se raboti drug mail, neshto se obyrkwa. Ama nali zatowa e POP3, za da pozwolqwa edin connection kym mailbox-a, za da ne se zanimawam s preobrazuwane kym uid nomera.
shte probwam i s uid-ta, kato imam povechko wreme i shte pisha kvo e stanalo
ama da znaesh, che towa ne reshawa problema. dnes imah wreme da naprawq po-seriozen test i rezultata e sledniq:
znachi wyrshi se programkata, kvoto si wyrshi (primerno za okolo 20 min.) i sled towa prawi neshto takowa
=========================
for($i=1;$i<=$mgnum;$i++){
imap_delete($mbox, $i);
}
imap_expunge($mbox);
=========================
i twa ne raboti (t.e. izpylnqwa se, ama ne trie nishto)
ako pusna edna druga test-owa programka sys systiq kod, ama samo s nego, gi trie wsichki. Prosto edinstwenoto, koeto mi idwa naum e, che ako idwa prez wremeto, koeto se raboti drug mail, neshto se obyrkwa. Ama nali zatowa e POP3, za da pozwolqwa edin connection kym mailbox-a, za da ne se zanimawam s preobrazuwane kym uid nomera.
shte probwam i s uid-ta, kato imam povechko wreme i shte pisha kvo e stanalo
Re: imap_delete problem!!!
dnes naprawih pak test-owe i lokalizirah problema, ama izobsto ne znaq zasto prawi taka
za wseki sluchaj naprawih masiv ot uid-tata na email-ite, koito obhojdam, za da moje nakraq naprawo da gi iztriq
wsichko raboti perfektno stiga po wreme na rabotata na script-a da ne dojde email, ako dojde neshto se prezakwa i ne trie nishto, ama nishto
za wseki sluchaj naprawih masiv ot uid-tata na email-ite, koito obhojdam, za da moje nakraq naprawo da gi iztriq
wsichko raboti perfektno stiga po wreme na rabotata na script-a da ne dojde email, ako dojde neshto se prezakwa i ne trie nishto, ama nishto
Re: imap_delete problem!!!
Проблема май ще се окаже комбиниран. Аз прерових сорса на PHP и разгледах функцията. Според мен се получава следното. Когато дойде нещо в $mbox. Имаме промяна на съдържанието на $mbox. Функцията imap_expunge($mbox) проверява дали има промяна и ако има реинициализира потока, а както е известно това води до нищо. Губят се маркираните за изтриване писма. Именно за това се препоръчва когато направиш imap_delete да викаш и imap_expunge. За да си сигурен, че ще бъде изтрито и няма да има промяна в съдържанието на $mbox. Ако е така както си мисля ще се наложи да промениш работата на предварителния алгоритъм или да смениш алгоритъма на изтриване. Дано това да помогне.
Re: imap_delete problem!!!
w krajna smetka se razminah samo s malka modifikaciq, t.e. tyj kato si pazq masiw-a s unikalnite kluchowe na mail-ite, prosto predi da go obhodq za iztriwane, zatwarqm i otwarqm mailbox-a. (pochti 99.(9)% shans da uspee bez da mu prechat :))
merci mnogo