Issue

The Zend Server reset stops and restarts both the Zend Server subsystem and the ZENDPHP74 (ZENDPHP7 for Zend Server 9.1.x - 2019.x or ZENDSVR6 for Zend Server 8.5.x) Apache instance, as well as cleans up some IPC objects and other things. 


This is a good procedure to perform if any Zend Server components are producing unexpected results.

Environment

Zend Server for IBM i version 6 or higher, running on any supported version of IBM i.

Resolution

Log into a 5250 session as QSECOFR.  (The user MUST be QSECOFR to get UID zero, no other user has this UID, even a *SECOFR class user will not have it).  From the command line:

For version 2020.0.x and higher

go zendphp74/zsmaint

Use option "41. Reset Zend Server environment". 

For version 9.1.x, 2018.0.x and 2019.0.x 

go zendphp7/zsmaint

Use option "41. Reset Zend Server environment". 

For version 6 - 8.5.x:

go zendsvr6/zsmaint

Use option "41. Reset Zend Server environment". 

For version 5

go zendsvr/zsmenu

Use option "9. Reset Zend Server environment". 


Wait for all of these messages to display:

Stopping Zend Server jobs

Clearing shared memory ...

Zend Server environment is reset
All Zend Server jobs are restarted

Use F3 to exit.  After the reset, check to see that all Zend Server jobs have restarted.  This article can help you with that:

Verify Zend Server for IBM i has started successfully



If you want to automate a process to periodically do the Reset, you can use this CL program in a scheduled job.  You will need to stop the Zend Server Environment before running this procedure.  If you are using Zend Server 9.1.x - 2019.x, Please REPLACE all instances of zendphp74 with zendphp7. If you are using Zend Server 6 - 8.5.x, Please REPLACE all instances of zendphp74 with zendsvr6

For Zend Server 202.x and higher
ENDSBS ZENDPHP74/ZENDPHP74
ENDTCPSVR SERVER(*HTTP) HTTPSVR(ZENDPHP74)
MONMSG MSGID(CPF0000)


Reset Zend Server environment:


PGM

DCL VAR(&CMDSHR) TYPE(*CHAR) LEN(50)
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
DCL VAR(&HOMEDIR) TYPE(*CHAR) LEN(50) +
VALUE('/usr/local/zendphp74')

/* Part 1 - clean up zombie Apache jobs */
CHGVAR VAR(&CMDSHR) VALUE('ps -ef | grep ' *CAT +
'/zendphp74/bin/php-cgi ' *CAT ' | awk '{print $2}' | +
xargs kill -9' || &NULL)

CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/sh' +
&CMDSHR)
MONMSG MSGID(CPF0000)
/* Part 2 - Clearing shared memory */

/*parameters : script, tofile, look for string, status */
CHGVAR VAR(&CMDSHR) VALUE(&HOMEDIR *TCAT +
'/bin/i5ipcrm_script.sh' || &NULL)
CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/sh' +
&CMDSHR)
MONMSG MSGID(CPF0000)

CHGVAR VAR(&CMDSHR) VALUE(&HOMEDIR *TCAT +
'/bin/clean_tmpfiles.sh' || &NULL)

CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/sh' +
&CMDSHR)
MONMSG MSGID(CPF0000)

ENDPGM