Jump to content

How to prevent lighttpd and fastCGI to share persistent sockets for different se


golden_boy615

Recommended Posts

I want to have persistent socket to send and receive data to a program written in C language on embedded linux on arm9 processor (this program has no problem in making and serving socket I tested it with other applications)

this is my code:

<?php
SESSION_START(); 
error_reporting(0);
@ini_set(‘display_errors’, 0);

if(!$_SESSION['randa']){
$_SESSION['randa'] = rand(1,99999);
}
echo $_SESSION['randa'] .'<br>';

$fp_a = pfsockopen("192.168.1.32",7777, $errno, $errstr, 30);

$outa = "D-1;".$_SESSION['randa'].';';
fwrite($fp_a, $outa);
$out_putt = fread($fp_a, 2048);
echo $out_putt ; 

?>
<meta http-equiv="refresh" content="2;url=?">

as you see it reloads every 2 seconds. My goal is to prevent closing socket due to the PHP script exit and each session has its own persistent opened socket because of some reasons in my project,The above code works fine with apache and every session have their own persistent socket with no problem, the problem rises when I put this script in lighttpd with fastCGI enabled.

lighttpd opens persistent socket and everything goes fine for one session but if more that one session (web pages on different PCs) open, lighttpd share this persistent socket for all of them and does not open new socket for different sessions and all of them read each others data and sends their own data to one opened socket .

I used even this script too:

<?php
session_start(); 
if(!$_SESSION['views']){
$_SESSION['views'] = pfsockopen("192.168.1.32",7777, $errno, $errstr, 30);
$fp = $_SESSION['views'] ;
stream_set_blocking ( $fp , 0 ) ;
}else{
$fp = $_SESSION['views'] ;
}
$sread=fread( $_SESSION['views'], 1024);
if($sread==false and $sread!=''){
$_SESSION['views'] = pfsockopen("192.168.1.32",7777, $errno, $errstr, 30);
$fp = $_SESSION['views'] ;
stream_set_blocking ( $fp , 0 ) ;
}
if ($fp) {
$out = "D-1;";
fwrite($fp, $out);
$out_put = $sread.fread($fp, 2048);
echo $out_put ; 
}
?>
<meta http-equiv="refresh" content="2;url=?">

to put persistent socket in session variable to prevent using same socket for different sessions but nothing changed and everything goes the same as first script did (one socket for all sessions ).

my config files are:

 

cat /etc/php.ini | grep ^[^\;]

engine = On

short_open_tag = On

asp_tags = Off

precision = 14

y2k_compliance = On

output_buffering = 4096

zlib.output_compression = On

zlib.output_compression_level = 5

implicit_flush = Off

unserialize_callback_func =

serialize_precision = 100

allow_call_time_pass_reference = Off

safe_mode = Off

safe_mode_gid = Off

safe_mode_include_dir =

safe_mode_exec_dir =

safe_mode_allowed_env_vars = PHP_

safe_mode_protected_env_vars = LD_LIBRARY_PATH

disable_functions =

disable_classes =

expose_php = On

max_execution_time = 30

max_input_time = 60

memory_limit = 16M

error_reporting = E_ALL & ~E_DEPRECATED

display_errors = Off

display_startup_errors = Off

log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

html_errors = Off

variables_order = "GPCS"

request_order = "GP"

register_globals = Off

register_long_arrays = Off

register_argc_argv = Off

auto_globals_jit = On

post_max_size = 8M

magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

auto_prepend_file =

auto_append_file =

default_mimetype = "text/html"

doc_root =

user_dir =

enable_dl = Off

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20

allow_url_fopen = On

allow_url_include = Off

default_socket_timeout = 60

[Date]

[filter]

[iconv]

[intl]

[sqlite]

[sqlite3]

[Pcre]

[Pdo]

[Pdo_mysql]

pdo_mysql.cache_size = 2000

pdo_mysql.default_socket=

[Phar]

[syslog]

define_syslog_variables  = Off

[mail function]

SMTP = localhost

smtp_port = 25

mail.add_x_header = On

[sql]

sql.safe_mode = Off

[ODBC]

odbc.allow_persistent = On

odbc.check_persistent = On

odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

[interbase]

ibase.allow_persistent = 1

ibase.max_persistent = -1

ibase.max_links = -1

ibase.timestampformat = "%Y-%m-%d %H:%M:%S"

ibase.dateformat = "%Y-%m-%d"

ibase.timeformat = "%H:%M:%S"

[MySQL]

mysql.allow_local_infile = On

mysql.allow_persistent = On

mysql.cache_size = 2000

mysql.max_persistent = -1

mysql.max_links = -1

mysql.default_port =

mysql.default_socket =

mysql.default_host =

mysql.default_user =

mysql.default_password =

mysql.connect_timeout = 60

mysql.trace_mode = Off

[MySQLi]

mysqli.max_persistent = -1

mysqli.allow_persistent = On

mysqli.max_links = -1

mysqli.cache_size = 2000

mysqli.default_port = 3306

mysqli.default_socket =

mysqli.default_host =

mysqli.default_user =

mysqli.default_pw =

mysqli.reconnect = Off

[mysqlnd]

mysqlnd.collect_statistics = On

mysqlnd.collect_memory_statistics = Off

[OCI8]

[PostgresSQL]

pgsql.allow_persistent = On

pgsql.auto_reset_persistent = Off

pgsql.max_persistent = -1

pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0

[sybase-CT]

sybct.allow_persistent = On

sybct.max_persistent = -1

sybct.max_links = -1

sybct.min_server_severity = 10

sybct.min_client_severity = 10

[bcmath]

bcmath.scale = 0

[browscap]

[session]

session.save_handler = files

session.use_cookies = 1

session.use_only_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly =

session.serialize_handler = php

session.gc_probability = 1

session.gc_divisor = 1000

session.gc_maxlifetime = 1440

session.bug_compat_42 = Off

session.bug_compat_warn = Off

session.referer_check =

session.entropy_length = 0

session.entropy_file =

session.cache_limiter = nocache

session.cache_expire = 180

session.use_trans_sid = 0

session.hash_function = 0

session.hash_bits_per_character = 5

 

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

[MSSQL]

mssql.allow_persistent = On

mssql.max_persistent = -1

mssql.max_links = -1

mssql.min_error_severity = 10

mssql.min_message_severity = 10

mssql.compatability_mode = Off

mssql.secure_connection = Off

[Assertion]

[COM]

[mbstring]

[gd]

[exif]

[Tidy]

tidy.clean_output = Off

[soap]

soap.wsdl_cache_enabled=1

soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

soap.wsdl_cache_limit = 5

[sysvshm]

[ldap]

ldap.max_links = -1

[mcrypt]

[dba]

and

 

cat /etc/lighttpd.conf | grep ^[^#]

server.modules              = (

          "mod_fastcgi",

                                "mod_access",

                                "mod_setenv",

                                "mod_cgi",

                                "mod_accesslog" )

server.document-root        = "/var/www"

server.errorlog            = "/var/log/lighttpd.error.log"

index-file.names            = ( "index.php", "index.html",

                                "index.htm", "default.htm" )

mimetype.assign            = (

  ".pdf"          =>      "application/pdf",

  ".sig"          =>      "application/pgp-signature",

  ".spl"          =>      "application/futuresplash",

  ".class"        =>      "application/octet-stream",

  ".ps"          =>      "application/postscript",

  ".torrent"      =>      "application/x-bittorrent",

  ".dvi"          =>      "application/x-dvi",

  ".gz"          =>      "application/x-gzip",

  ".pac"          =>      "application/x-ns-proxy-autoconfig",

  ".swf"          =>      "application/x-shockwave-flash",

  ".tar.gz"      =>      "application/x-tgz",

  ".tgz"          =>      "application/x-tgz",

  ".tar"          =>      "application/x-tar",

  ".zip"          =>      "application/zip",

  ".mp3"          =>      "audio/mpeg",

  ".m3u"          =>      "audio/x-mpegurl",

  ".wma"          =>      "audio/x-ms-wma",

  ".wax"          =>      "audio/x-ms-wax",

  ".ogg"          =>      "application/ogg",

  ".wav"          =>      "audio/x-wav",

  ".gif"          =>      "image/gif",

  ".jpg"          =>      "image/jpeg",

  ".jpeg"        =>      "image/jpeg",

  ".png"          =>      "image/png",

  ".xbm"          =>      "image/x-xbitmap",

  ".xpm"          =>      "image/x-xpixmap",

  ".xwd"          =>      "image/x-xwindowdump",

  ".css"          =>      "text/css",

  ".html"        =>      "text/html",

  ".htm"          =>      "text/html",

  ".js"          =>      "text/javascript",

  ".asc"          =>      "text/plain",

  ".c"            =>      "text/plain",

  ".cpp"          =>      "text/plain",

  ".log"          =>      "text/plain",

  ".conf"        =>      "text/plain",

  ".text"        =>      "text/plain",

  ".txt"          =>      "text/plain",

  ".dtd"          =>      "text/xml",

  ".xml"          =>      "text/xml",

  ".mpeg"        =>      "video/mpeg",

  ".mpg"          =>      "video/mpeg",

  ".mov"          =>      "video/quicktime",

  ".qt"          =>      "video/quicktime",

  ".avi"          =>      "video/x-msvideo",

  ".asf"          =>      "video/x-ms-asf",

  ".asx"          =>      "video/x-ms-asf",

  ".wmv"          =>      "video/x-ms-wmv",

  ".bz2"          =>      "application/x-bzip",

  ".tbz"          =>      "application/x-bzip-compressed-tar",

  ".tar.bz2"      =>      "application/x-bzip-compressed-tar"

)

accesslog.filename          = "/var/log/access.log"

debug.log-request-handling = "enable"

url.access-deny            = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {

  server.range-requests = "disable"

}

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

fastcgi.server = ( ".php" => ((

                    "bin-path" => "/usr/bin/php-cgi",

                    "socket" => "/tmp/php.socket"

                )))

                                                         

cgi.assign                = ( ".cgi" => "" )

alias.url = ( "/cgi-bin" => "/usr/www/cgi-bin" )

server.upload-dirs=( "/usr/www" )

server.max-request-size = 1000

How can I prevent this problem? which configuration should I change for what to enable one socket for one session ??

 

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.