Passer au contenu du forum

Forum du RHIEN

Forum d'entraide pour le Réseau des Hébergeurs Indépendants et Engagés

Vous n’êtes pas identifié. Veuillez vous connecter ou vous inscrire.


Ecrire une réponse

Forum du RHIEN » Hébergement » log d'une fonction PHP » Ecrire une réponse

Ecrire une réponse

Composez et envoyez votre nouvelle réponse

Vous pouvez utiliser : BBCode Images Binettes

Les champs marqués %s doivent être remplis avant d’envoyer ce formulaire.

Information obligatoire pour les invités



Captcha image. Turn pictures on to see it.
Information obligatoire

Revue du sujet (plus récents en tête)

10

Je précise que c'est tout de même assez spécifique par rapport à mon architecture, mais ça peut servir...
Autre chose, ça présente l'avantage d'assigner le Return-Path des mails avec l'option -f de sendmail.
Ce qui fait que c'est le user en question qui a les bounces, et pas l'admin... Ca soulage... (surtout avec plus de 300 comptes)

9

Merci.

8

[code=sql]--
-- Structure de la table `mailshaper`
--

CREATE TABLE `mailshaper` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL default '',
  `howmany` int(11) NOT NULL default '0',
  `last_update` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
);[/code]

7

:: php.ini ::
[code=apache]sendmail_path = /etc/php5/apache/sendmail[/code]

:: /etc/php5/apache/sendmail ::
[code=perl]
#!/usr/bin/perl -w

use strict;
use Date::Parse;
use DBI;

my $dsn = "DBI:mysql:database=DATABASE;mysql_socket=/var/run/mysqld/mysqld.sock";
my $dbh = DBI->connect($dsn,'username', 'password');
my $date; my $user=''; my $from; my $delaymin;
chomp( $date = `/bin/date +'%Y%m%d-%H%M%S'` );

##
# sendmail wrapper

my $msg="";

# lecture entree
while(<STDIN>)
{
  ## tests si besoin sur le contenu

  $msg .= $_;
}

##
# environnement
if($ENV{'PWD'} =~ /^\/home\/users\/([A-Za-z0-9\-]+)\//)
{ $user = $1; my $sth = $dbh->prepare("SELECT email FROM users WHERE username='$user'");
  $sth->execute; my $ref = $sth->fetchrow_hashref(); $from = $ref->{'email'}; $delaymin = 30; }
elsif($ENV{'PWD'} =~ /^\/var\/www\/htdocs/)
{ $user = 'ironie'; $from = 'webmaster@ironie.org'; $delaymin = 10; }
else
{ $user = 'unknown'; $from = 'www@ironie.org'; $delaymin = 60; }


##
# tagage
if( $from ne '' )
{ $msg =~ s#\n\r?\n\r?#\nX-Username: $user\nX-Env: $ENV{'PWD'}\n\n#; }


if( $diff >= $delaymin && $howmany <= 10 && $from ne '' )
{
  # fichier temporaire
  open(S,"+>/tmp/mail.$date"); print S $msg; close(S);

  # appel sendmail
  qx#/usr/sbin/sendmail -t -i -f $from  < /tmp/mail.$date#;

  # log
  open(S,">>/var/log/mail.php");
  print S "$date: php mail\n$msg\n--\n";
  close(S);

  $howmany++;

  if($id == 0)
  { $dbh->do("INSERT INTO mailshaper(username,howmany,last_update) VALUES('$user','$howmany',NOW())"); }
  else
  { $dbh->do("UPDATE mailshaper SET howmany='$howmany',last_update=NOW() WHERE id='$id' AND username='$user'"); }

  $ret=0;
}
else
{
  $ret=1;
}

# Disconnect from the database.
$dbh->disconnect();
 
exit($ret);[/code]

6

aaah oui c'est fort intéressant pour mail()...


maintenant il faut passer par commande extérieur, donc c'est chaud pour un truc du même genre mais pour une autre fonction php.

5

Moi aussi ça m'intéresse smile

4

Ca m'intéresse également. smile

3

Ca m'intéresse pas mal ça !!
Tu peux nous donner plus d'infos titoplé ?

2

Voici ce que j'ai fait sur Ironie.org

La commande php mail() est associee, dans php.ini, a une commande systeme (par defaut : /usr/sbin/sendmail)
J'ai cree un script perl, qui s'interface entre les deux. Ca me permet de compter les mails envoyes, par compte, et d'appliquer des restrictions.

Si tu veux plus d'infos, hesite pas.

1

Il y a moyen de logguer l'activité d'une fonction PHP ?

Je vise là, la fonction mail().
Récupérer des infos sur son utilisation sur l'entièreté du serveur,  savoir de quel fichier ça été utilisé (ainsi pourvoir définir les comptes où ça été utilisé), ... placer tout ça dans un fichier log et ensuite pouvoir par exemple générer des stats.

Et bon pourquoi pas voir ça pour une autre fonction également ( on sais jamais, ca peut servir tongue ).

Forum du RHIEN » Hébergement » log d'une fonction PHP » Ecrire une réponse


Currently installed 2 official extensions. Copyright © 2003–2009 PunBB.