#29479 [Sus]: changing current process name
| From: | pajoye@php.net | Date: | Wed, 21 Jan 2009 22:35:49 +0000 |
| Subject: | #29479 [Sus]: changing current process name | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-133133@lists.php.net to get a copy of this message | ||
ID: 29479
Updated by: pajoye@php.net
Reported By: black at scene-si dot org
Status: Suspended
Bug Type: Feature/Change Request
Operating System: linux
PHP Version: 6CVS
New Comment:
hi!
I would suggest to simply propose it to pecl-dev. That's the place to
discussion proposals for PECL.
cheers,
Previous Comments:
------------------------------------------------------------------------
[2009-01-21 20:56:48] magicaltux@php.net
Just for info since a lot of people seems to be looking for this kind
of solution (I'm one of them), I've hosted the proctitle extension on a
SVN repository, updated and fixed.
Available at:
http://ookoo.org/svn/proctitle/
Please let me know if you want to add things to this extension. I
tested it with PHP 5.2.8 and PHP 5.3.0alpha3, without problems.
------------------------------------------------------------------------
[2008-06-09 22:52:55] lindsay dot snider at gmail dot com
Here is a shorter version based off of xdecock's code which has been
working well. I see value in having this available when using PHP in
CLI mode.
-------------------------------------------
#include <php.h>
#include <SAPI.h>
#include <dlfcn.h>
#include <string.h>
static char *argv0 = NULL;
#define MAX_TITLE_LENGTH 128
void setproctitle(char *title)
{
char buffer[MAX_TITLE_LENGTH];
int tlen = strlen(title);
memset(buffer, 0x20, MAX_TITLE_LENGTH);
buffer[MAX_TITLE_LENGTH-1] = '\0';
if( tlen < (MAX_TITLE_LENGTH-1) )
memcpy(buffer, title, tlen);
if( argv0 )
snprintf(argv0, MAX_TITLE_LENGTH, "%s", buffer);
}
void set_proctitle_init()
{
sapi_module_struct *symbol = NULL;
symbol = (sapi_module_struct *)dlsym(NULL, "sapi_module");
if( symbol )
argv0 = symbol->executable_location;
}
PHP_FUNCTION(setproctitle)
{
char *title;
long tlen;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&title,
&tlen) == FAILURE)
RETURN_FALSE;
setproctitle(title);
}
------------------------------------------------------------------------
[2007-06-06 12:54:17] xdecock at gmail dot com
I've tried to make a port of the apache thing used for wikipedia to a
more generic one.
If it can be usefull for anyone (only tested it on cli, as i search the
way of doing this for cli primary)
Not sure how good is this method, at first seen, it works
proctitle.h & config.m4 are almost the same (except for MREQUEST_INIT &
MREQUEST_SHUTDOWN), but it is not usefull for CLI
the url for those files:
http://wikipedia.svn.sourceforge.net/viewvc/wikipedia/trunk/extensions/pecl-proctitle/php_proctitle.h?revision=9174&view=markup
#proctitle.c
/*
+----------------------------------------------------------------------+
| PHP Version 4
|
+----------------------------------------------------------------------+
| Copyright (c) 1997-2003 The PHP Group
|
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license,
|
| that is bundled with this package in the file LICENSE, and is
|
| available at through the world-wide-web at
|
| http://www.php.net/license/2_02.txt.
|
| If you did not receive a copy of the PHP license and are unable to
|
| obtain it through the world-wide-web, please send a note to
|
| license@php.net so we can mail you a copy immediately.
|
+----------------------------------------------------------------------+
| Author:
|
+----------------------------------------------------------------------+
$Id$
*/
#define MAXTITLE 1024
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <syslog.h>
#include "php.h"
#include "php_ini.h"
#include "SAPI.h"
#include "ext/standard/info.h"
#include "php_proctitle.h"
#include <dlfcn.h>
/* If you declare any globals in php_proctitle.h uncomment this:
ZEND_DECLARE_MODULE_GLOBALS(proctitle)
*/
/* True global resources - no need for thread safety here */
static int le_proctitle;
static char *proctitle_argv=NULL;
static char process_base_name[MAXTITLE+1];
#ifndef HAVE_PROCTITLE
void setproctitle(char *title) {
if (proctitle_argv){
sprintf(proctitle_argv,process_base_name,title);
}
}
#endif
/* {{{ proctitle_functions[]
*
* Every user visible function must have an entry in
proctitle_functions[].
*/
function_entry proctitle_functions[] = {
PHP_FE(setproctitle, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in proctitle_functions[]
*/
};
/* }}} */
/* {{{ proctitle_module_entry
*/
zend_module_entry proctitle_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
"proctitle",
proctitle_functions,
PHP_MINIT(proctitle),
PHP_MSHUTDOWN(proctitle),
NULL, /* Replace with NULL if there's nothing to do at request
start */
NULL, /* Replace with NULL if there's nothing to do at request end
*/
PHP_MINFO(proctitle),
#if ZEND_MODULE_API_NO >= 20010901
"0.1", /* Replace with version number for your extension */
#endif
STANDARD_MODULE_PROPERTIES
};
/* }}} */
#ifdef COMPILE_DL_PROCTITLE
ZEND_GET_MODULE(proctitle)
#endif
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(proctitle)
{
sapi_module_struct *symbol;
if(!proctitle_argv) {
symbol=(sapi_module_struct *)dlsym(NULL,"sapi_module");
if (symbol){
sprintf(process_base_name,"PHP %s: %%s",symbol->name);
proctitle_argv=symbol->executable_location;
}
}
setproctitle("php_init");
return SUCCESS;
}
/* }}} */
/* {{{ PHP_MSHUTDOWN_FUNCTION
*/
PHP_MSHUTDOWN_FUNCTION(proctitle)
{
setproctitle("php_deinit");
return SUCCESS;
}
/* }}} */
/* {{{ PHP_MINFO_FUNCTION
*/
PHP_MINFO_FUNCTION(proctitle)
{
php_info_print_table_start();
php_info_print_table_header(2, "proctitle support", "enabled");
php_info_print_table_end();
}
/* }}} */
PHP_FUNCTION(setproctitle)
{
char *string = NULL;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string,
&str_len) == FAILURE) {
setproctitle("System: Erreur");
RETURN_NULL();
}
setproctitle(string);
RETURN_BOOL(1);
}
/* }}} */
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4
* vim<600: noet sw=4 ts=4
*/
------------------------------------------------------------------------
[2006-08-22 21:22:51] jdoak at google dot com
Is there currently a way to do this in php 5? It doesn't appear that
the pecl module listed below is actually around any longer:
http://cvs.sourceforge.net/viewcvs.py/wikipedia/extensions/pecl-proctitl
e/
and a search for it turned up nothing. I'm just curious if this has
been implemented or is this possible now on linux systems?
------------------------------------------------------------------------
[2006-05-15 16:56:36] jerj at coplanar dot net
It appears someone has implemented this:
http://cvs.sourceforge.net/viewcvs.py/wikipedia/extensions/pecl-proctitle/
I'm going to try and compile it now.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/29479
--
Edit this bug report at http://bugs.php.net/?id=29479&edit=1